想要:Pl / pgSQL函数的“ COPY to / from ...”的替代方法

时间:2019-07-01 10:33:30

标签: sql postgresql plpgsql

以下代码:

Copy ( select bla
         from some_table p,
              some_procedure (par1 := null,
                              par2 := null ) as sp
        where p.var1 = sp.var1
        order 
           by some_table_id) to stdout;

...在脚本内(即在psql中)工作,但在Pl / pgSQL函数内失败。

在函数内部时,错误消息如下:

"ERROR:  cannot COPY to/from client in PL/pgSQL"

我的问题是: 如何在Pl / pgSQL函数中执行相同的操作?

1 个答案:

答案 0 :(得分:1)

从函数的角度来看,

./gradlew clean deployNodes 仅仅是运行该语句的客户端。

所以只需将函数声明为stdout并返回查询结果:

returns table()

如果这是一个匿名PL / pgSQL块,则可以遍历结果,然后使用create function get_data(var1 ..., var2 ...) returns table (bla....) as $$ select bla from some_table p join some_procedure (par1 := null, par2 := null ) as sp on p.var1 = sp.var1 order by some_table_id; $$ language sql; “打印”它:

raise notice