Как вернуть несколько таблиц в postgres без refcursor? - PullRequest
0 голосов
/ 24 апреля 2018

У меня есть один SQL-запрос, например, где я возвращаю две таблицы.Как вернуть две таблицы в postgres?

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

Как это сделать в функции postgres?Структура этих двух таблиц не одинакова.Мне нужны два отдельных набора результатов в виде таблицы, такой как table [0] и table [1].Мне нужно вернуть только эти два оператора выбора из функции.

1 Ответ

0 голосов
/ 25 апреля 2018

К сожалению, текущий 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/

В конце статьи вы видите, что они хотят реализовать «Возврат нескольких наборов результатов».

...