带有 refcursors 的 Postgres CTE

Postgres CTE with refcursors

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

我使用 refcursors 来 return 来自同一函数的多个记录集,并在整个处理过程中重复使用数据集的 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 ... 

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

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

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