PL/pgSQL INSERT INTO 表
Posted
技术标签:
【中文标题】PL/pgSQL INSERT INTO 表【英文标题】:PL/pgSQL INSERT INTO table 【发布时间】: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 【参考方案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 中使用不带引号的混合大小写标识符。
【讨论】:
做到了!谢谢!以上是关于PL/pgSQL INSERT INTO 表的主要内容,如果未能解决你的问题,请参考以下文章