souviksardar Ответов: 1

Как вернуть нескольких таблиц в Postgres без типа refcursor?


У меня есть одна такая процедура в sql server:::::
CREATE PROC SP_FetchData()
as
begin
select FirstName, LastName from TBl_Users;
select TaskId,CreatedBy from TBl_Log;
END;

Я хочу выполнить тот же запрос в функции postgres без использования refcursor. как я могу это сделать?

Что я уже пробовал:

CREATE FUNCTION SP_FetchData() RETURNS setof refcursor AS
$$
DECLARE c1 refcursor;
DECLARE c2 refcursor;
BEGIN
    OPEN c1 FOR
    select FirstName, LastName from TBl_Users;
    RETURN NEXT c1;

    OPEN c2 FOR
    select TaskId,CreatedBy from TBl_Log;
    RETURN NEXT c2;
END;
$$ LANGUAGE 'plpgsql';


-- Он работает нормально, но я не хочу использовать рефкурсор. Как я могу это сделать?

1 Ответов

Рейтинг:
1

Wendelius

Насколько я знаю, PostGres не поддерживает несколько результирующих наборов без курсоров, как это делает SQL Server.

В принципе вы можете объединить результирующие наборы например с помощью UNION ALL но для этого потребуется, чтобы структура и типы данных обоих наборов результатов были одинаковыми. Основываясь на ваш вопрос, это не тот случай.

Поэтому, если объединение не является возможным вариантом, вам, вероятно, придется использовать ref-курсоры или разделить запросы на две разные процедуры.


souviksardar

Мне даже не нужен союз. Я новичок в postGres, вы уверены, что он не поддерживает мультирезультатный набор, как sql? thnx за ваш ответ