我有一个SQL查询,就像我返回两个表一样。如何在postgres中返回两个表?
create proc sp_fetchResult
as
begin
select * from TBl_Users;
select * from TBl_Log;
end;
如何在postgres功能中执行此操作?这两个表的结构不一样。我需要表格形式的两个单独的结果集,如table [0]和table [1]。我需要从函数中只返回这两个select语句。
答案 0 :(得分:1)
不幸的是,目前的PostgreSQL 10不允许它。从存储的函数中,您只能返回带有已定义结构的TABLE类型或带有用户定义类型的SETOF。
但是你不能简单地返回结果集或更多没有声明结构的结果集(就像在MySQL或MS SQL中一样)。目前唯一可能的是 - 正如你所提到的 - refcursor。见这里:http://www.sqlines.com/postgresql/how-to/return_result_set_from_stored_procedure
但是PostgreSQL 11即将实现存储过程 - 请参阅此处:https://blog.2ndquadrant.com/postgresql-11-server-side-procedures-part-1/
在文章的最后,您可以看到他们想要实现"返回多个结果集"。