0

如何使用 CTE 中生成的表达式打开多个 refcursor?

我使用 refcursors 从同一函数返回多个记录集,并使用 CTE 在整个处理过程中重复使用数据集。

我会使用临时表,但这次经历让我伤痕累累。

我试过这个,但它会导致语法错误:

WITH 
  expr1 (
    select ... from ...
  ),
  expr2 (
    select ... from expr1 inner join ...
  ),
  expr3 (
    OPEN refcursor1 FOR select ... from expr2
  )
  OPEN refcursor2 FOR select ... from expr2 inner join ... 
4

1 回答 1

0

您不能那样做,因为您不能OPEN在 SQL 语句中嵌入 PL/pgSQL 语句 ( )。

如果需要两次,则必须运行两次查询refcursors

也许您应该找出临时表的问题所在——例如,检查日志中的内存上下文转储。

于 2019-02-19T01:44:08.547 回答