我有一个plpgsql函数,它创建一个execute语句,我希望它将它执行到一个表中。标准EXECUTE ... INTO table_name
不起作用,所以我一直在寻找替代方案。基本上,select语句返回三列我想保存到表中。
以下是执行的一些示例代码:
query = 'SELECT name, work, phone FROM info WHERE name = '
|| quote_literal(inName) || ' ORDER BY phone';
理想情况下,如果我只是自己运行查询,我只会放入一个SELECT INTO表名,但这不适用于执行。
有什么想法吗?
答案 0 :(得分:1)
EXECUTE 'CREATE TABLE foo AS
SELECT name, work, phone
FROM info WHERE name = ' || quote_literal(in_name) || ' ORDER BY phone';
为此目的不鼓励{p> SELECT INTO
: SELECT / EXECUTE .. INTO ..
适用于单个行,而不适用于plpgsql中的整个表。
plpgsql中的赋值运算符是:=
,而不是=
并且缺少单引号
并且不要在Postgres中使用未加引号的混合大小写标识符。