Как вернуть две таблицы в PostgreSQL - PullRequest
0 голосов
/ 25 апреля 2018

Я новичок в POSTGRESQL, и я создаю функции PostgreSQL, и теперь я хочу создать функцию, которая возвращает вывод двух таблиц, я создал, и она не работает

моя функция

CREATE FUNCTION getData() RETURNS setof refcursor AS
$$
DECLARE c_top_items refcursor;
DECLARE c_shopping_cart refcursor;
BEGIN
    OPEN c_top_items FOR
        SELECT t.name
        FROM employee t
        LIMIT 10;
    RETURN NEXT c_top_items;
    OPEN c_shopping_cart FOR
        SELECT c.name
        FROM employee c
        LIMIT 5;
    RETURN NEXT c_shopping_cart;
END;
$$ LANGUAGE plpgsql;

Пожалуйста, помогите !!

1 Ответ

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

Когда вы вызываете getData, вы получаете два курсора, извлекайте все из них.Я изменил пример в документации и извлек данные:в документации.Это тот пример:

CREATE FUNCTION myfunc(refcursor, refcursor) RETURNS SETOF refcursor AS $$
BEGIN
    OPEN $1 FOR SELECT * FROM table_1;
    RETURN NEXT $1;
    OPEN $2 FOR SELECT * FROM table_2;
    RETURN NEXT $2;
END;
$$ LANGUAGE plpgsql;

-- need to be in a transaction to use cursors.
BEGIN;

SELECT * FROM myfunc('a', 'b');

FETCH ALL FROM a;
FETCH ALL FROM b;
COMMIT;

См .: Возвращение курсоров

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...