Bas*_*que 5 postgresql stored-procedures postgresql-11
Postgres 咨询公司的这篇博文提到 Postgres 11 中新的服务器端过程支持将能够返回多个结果集。
? 这个特性确实出现在 Postgres 11 版本中吗?
如果是这样,你能简单解释一下它是如何工作的吗?显示一些代码示例?
您可以从过程中返回多个结果集 - 类似于使用函数始终可以实现的方式:
create procedure getdata(result_one inout refcursor, result_two inout refcursor)
as
$$
begin
open result_one for
select *
from (values (1,2,3), (4,5,6)) as t(a,b,c);
open result_two for
select *
from (values ('one'),('two'),('three'),('four')) as p(name);
end;
$$
language plpgsql;
Run Code Online (Sandbox Code Playgroud)
但是,显示结果有点麻烦 - 至少在psql
:
create procedure getdata(result_one inout refcursor, result_two inout refcursor)
as
$$
begin
open result_one for
select *
from (values (1,2,3), (4,5,6)) as t(a,b,c);
open result_two for
select *
from (values ('one'),('two'),('three'),('four')) as p(name);
end;
$$
language plpgsql;
Run Code Online (Sandbox Code Playgroud)
不过,某些 SQL 客户端可以自动显示结果。
归档时间: |
|
查看次数: |
4175 次 |
最近记录: |