Postgresql 在存储过程中使用SELECT INTO[tableName]无效
我正在尝试使用表中的表名Postgresql 在存储过程中使用SELECT INTO[tableName]无效,postgresql,Postgresql,我正在尝试使用表中的表名 SELECT INTO [tableName] 但它抱怨说[tableName]应该是记录变量、行变量或标量变量列表。如何将select的结果放入表中,而不是存储过程中的变量?是否希望插入到。。。选择查询,而不是选择进入。例如: INSERT INTO my_table (name, my_avg) SELECT name, AVG(col) FROM your_table GROUP BY name 除非您确实想要创建一个新表,否则SELECT INTO应该可以正
SELECT INTO [tableName]
但它抱怨说[tableName]应该是记录变量、行变量或标量变量列表。如何将select的结果放入表中,而不是存储过程中的变量?是否希望插入到。。。选择查询,而不是选择进入。例如:
INSERT INTO my_table (name, my_avg) SELECT name, AVG(col) FROM your_table GROUP BY name
除非您确实想要创建一个新表,否则SELECT INTO应该可以正常工作:
vsavard_db=> SELECT 1 INTO b;
SELECT
Time : 47,268 ms
vsavard_db=> SELECT * FROM b;
?column?
----------
1
(1 line)
您的语法错误,根据您的存储过程,您应该遵循以下模式:
SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]
* | expression [ AS output_name ] [, ...]
INTO [ TEMPORARY | TEMP ] [ TABLE ] new_table
[ FROM from_item [, ...] ]
[ WHERE condition ]
[ GROUP BY expression [, ...] ]
[ HAVING condition [, ...] ]
[ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]
[ ORDER BY expression [ ASC | DESC | USING operator ] [, ...] ]
[ LIMIT { count | ALL } ]
[ OFFSET start ]
[ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] ]
例如:选择*进入my_表,其中x=@myParam如本手册所述: 不能在pl/pgSQL过程中使用该语法 您需要使用以下语法: CREATE TABLE new_table AS SELECT .... 新建表格 作为 选择。。。。
是否要添加到现有表中?或者尝试创建一个名为“my_table”的新表?在列选择之前或之后输入将导致相同的结果。输入后应为记录变量、行变量或标量变量列表。编写PlPgSQL存储过程时,阅读有关PlPgSQL的文档通常更容易…当作者如此懒惰时,回答此类问题的原因是什么,他/她在这里写问题比阅读文档更容易。。。你不喜欢花时间回答吗?@valgog:我希望(!)作者会感到羞愧,因为他发现在手册中找到这样的东西是多么容易。