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 表的主要内容,如果未能解决你的问题,请参考以下文章

在 PL/pgSQL 函数中使用变量

它可以引用 PL/pgSQL 变量或表列

如何在 PL/pgSQL 中按行类型返回表

循环通过 PL/PGSQL 中的 CURSOR 而不锁定表

SQL INSERT INTO SUBFORM from QUERY in ms access

PL/pgSQL 函数不能正常工作