【问题标题】:PL/pgSQL INSERT INTO tablePL/pgSQL INSERT INTO 表
【发布时间】:2014-04-03 14:24:02
【问题描述】:

我有一个创建执行语句的 plpgsql 函数,我希望它在表中执行它。标准的EXECUTE ... INTO table_name 不起作用,所以我正在寻找替代方案。基本上,select 语句会返回我想要保存到表中的三列。

这是执行的一些示例代码:

query = 'SELECT name, work, phone FROM info WHERE name = '
        || quote_literal(inName) || ' ORDER BY phone';

理想情况下,如果我只是自己运行查询,我会放一个 SELECT INTO 表名,但这不适用于执行。

有什么想法吗?

【问题讨论】:

  • 将其执行到表中”根本没有意义
  • 可以选择入表,为什么不执行? :O

标签: postgresql plpgsql dynamic-sql create-table


【解决方案1】:

为此使用CREATE TABLE AS

EXECUTE 'CREATE TABLE foo AS
   SELECT name, work, phone
   FROM info WHERE name = ' || quote_literal(in_name) || ' ORDER BY phone';

SELECT INTO 不鼓励用于此目的:
Combine two tables into a new one so that select rows from the other one are ignored

SELECT / EXECUTE .. INTO .. 用于单个行,而不是用于 plpgsql 中的整个表。

plpgsql 中的赋值运算符是:=,而不是=
并且缺少单引号。
并且不要在 Postgres 中使用不带引号的混合大小写标识符。

【讨论】:

  • 做到了!谢谢!
猜你喜欢
  • 2012-08-12
  • 1970-01-01
  • 1970-01-01
  • 2018-02-10
  • 2016-05-03
  • 2012-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多