У меня есть один SQL-запрос, например, когда я возвращаю две таблицы. Как вернуть две таблицы в postgres?
create proc sp_fetchResult
as
begin
select * from TBl_Users;
select * from TBl_Log;
end;
Как это сделать в функции postgres? Структура этих двух таблиц не одинакова. Мне нужны два отдельных набора результатов в виде таблицы, например table [0] и table [1]. Мне нужно вернуть только эти два оператора select из функции.
структура этих двух таблиц не одинакова. Мне нужно два отдельных набора результатов в виде таблицы, например table [0] и table [1]. пожалуйста, скажите мне, как это сделать --- создать процедуру sp_fetchResult как begin select * from TBl_Users; выберите * из TBl_Log; конец; в postgres
выберите FirstName, LastName из TBl_Users; выберите TaskId, CreatedBy из TBl_Log; Мне нужно вернуть только эти два оператора выбора из функции
ref курсоры в настоящее время ваш единственный вариант




К сожалению, текущий 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/
В конце статьи вы можете увидеть, что они хотят реализовать «Возврат нескольких наборов результатов».
Подробно опишите структуру обеих таблиц и структуру желаемого вывода. И удалите тег java, так как это чистый postgres.