PL / pgSQL INSERT INTO表

时间:2014-04-03 14:24:02

标签: postgresql plpgsql dynamic-sql create-table

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

以下是执行的一些示例代码:

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

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

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

使用CREATE TABLE AS

EXECUTE 'CREATE TABLE foo AS
   SELECT name, work, phone
   FROM info WHERE name = ' || quote_literal(in_name) || ' ORDER BY phone';
为此目的不鼓励{p> 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中使用未加引号的混合大小写标识符。