如何在没有refcursor的情况下返回postgres中的多表?

时间:2018-04-24 16:27:21

标签: java sql postgresql return

我有一个SQL查询,就像我返回两个表一样。如何在postgres中返回两个表?

 create proc sp_fetchResult
    as
    begin
    select * from TBl_Users;
    select * from TBl_Log;
    end;    

如何在postgres功能中执行此操作?这两个表的结构不一样。我需要表格形式的两个单独的结果集,如table [0]和table [1]。我需要从函数中只返回这两个select语句。

1 个答案:

答案 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/

在文章的最后,您可以看到他们想要实现"返回多个结果集"。