1

作为这个问题的后续行动:

我尝试:

perform (with test_as_cte as(select * from myTable) select * from test_as_cte);

但是得到以下错误:

SQL Error [42601]: ERROR: subquery must return only one column
Where: PL/pgSQL function inline_code_block line 9 at PERFORM

如果我在上面的代码中替换*myCol没有错误。

但是,我需要使用 CTE 进行实际的性能测试并返回多个列。

4

1 回答 1

2

WITH括号中的查询被视为子选择。只要它返回单个值(一行的一列),它就可以正常工作。否则,您必须将其视为子查询并像这样调用它(在 PL/pgSQL 代码块内!):

PERFORM * FROM (with test_as_cte as (select * from b2) select * from test_as_cte t) sub;

要不就:

PERFORM FROM (<any SELECT query>) sub;

手册:

PERFORM query;

这将执行query并丢弃结果。以与编写 SQL 命令相同的方式编写查询SELECT,但将初始关键字替换SELECTPERFORM. 对于WITH查询,请使用 PERFORM并将查询放在括号中。(在这种情况下,查询只能返回一行。)

我认为这可能更清楚。我会建议对文档进行修复。

于 2022-02-08T21:43:37.297 回答