此说明有效:
SELECT INTO unsolvedNodes array_agg(DISTINCT idDestination)
FROM road
WHERE idOrigin = ANY(solvedNodes)
AND NOT (idDestination = ANY(solvedNodes));
但我想用这种方式:
SELECT INTO unsolvedNodes array_agg(DISTINCT idDestination), lengths array_agg(length)
FROM road
WHERE idOrigin = ANY(solvedNodes)
AND NOT (idDestination = ANY(solvedNodes));
如何只使用一个“SELECT INTO”指令来设置多个变量?
答案 0 :(得分:19)
在 PL / pgSQL 中,您可以根据需要随时添加SELECT INTO
多个变量。你刚才有了语法:
SELECT INTO unsolvedNodes, lengths
array_agg(DISTINCT idDestination), array_agg(length)
FROM road
WHERE idOrigin = ANY(solvedNodes)
AND NOT (idDestination = ANY(solvedNodes));
您有关键字INTO
后跟目标变量列表,并且您有一个相应的SELECT
列表。 INTO
子句的目标可以是(引用the manual here):
...记录变量,行变量或逗号分隔的列表 简单变量和记录/行字段。
此外:
INTO
子句几乎可以出现在SQL命令的任何位置。 通常它是在列表之前或之后编写的 在SELECT
命令中或命令末尾的select_expressions 对于其他命令类型。建议您按照此操作 如果PL / pgSQL解析器在将来的版本中变得更严格,则使用约定。
不要与SELECT INTO
in the SQL dialect of Postgres混淆 - 没有人应该再使用了。它违反标准SQL,最终将被删除。该手册积极阻止其继续使用:
最好在新代码中将
CREATE TABLE AS
用于此目的。
答案 1 :(得分:2)
是的
SELECT name,family INTO cName, cFamily FROM "CommonUsersModel";
OR
SELECT INTO cName, cFamily name,family FROM "CommonUsersModel"