该指令有效:
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指令来设置多个变量?
SELECT INTO
在 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子句的目标可以是(在此处引用手册):
INTO
SELECT
…记录变量,行变量或逗号分隔的简单变量和记录/行字段列表。
还:
该INTO子句几乎可以出现在SQL命令中的任何位置。通常,它写在SELECT命令中select_expressions列表之前或之后,或者对于其他命令类型,写在命令末尾。建议您遵循此约定,以防PL / pgSQL解析器在以后的版本中变得更加严格。
这 不是混淆 与SELECT INTOPostgres里的SQL方言不应使用任何更多-。它违反标准SQL,最终很有可能会被删除。该手册积极劝阻其继续使用:
最好CREATE TABLE AS为此在新代码中使用。
CREATE TABLE AS