带有反射器的Postgres CTE

时间:2019-02-18 23:35:57

标签: postgresql ref-cursor

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

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

我会使用临时表,但我是scarred after this experience

我尝试过此操作,但是会导致语法错误:

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 ... 

1 个答案:

答案 0 :(得分:0)

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

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

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

相关问题