Несколько наборов результатов из хранимой процедуры с PostgreSQL - PullRequest
1 голос
/ 23 октября 2019

Получение неожиданного результата от функции. Мне просто нужны два набора результатов из кода, который я написал в функции, но вместо этого я получаю неименованную проблему с порталом.

Я пробовал то же самое с помощью курсора. Что выглядит следующим образом.

CREATE OR REPLACE FUNCTION User(param_state CHAR(10)) RETURNS SETOF refcursor AS $$
    DECLARE
      ref1 refcursor;           -- Declare cursor variables
      ref2 refcursor;                             
    BEGIN
      OPEN ref1 FOR select *  from Table1
    WHERE code = param_state;
    RETURN NEXT ref1;                                                                              

      OPEN ref2 FOR select * from Table2
    WHERE  code= param_state;

    RETURN NEXT ref2; 

    END;
    $$ LANGUAGE plpgsql;

Ожидаемый результат должен быть равен 2 результирующему набору из 2 столбцов в каждом

-------------------
|party_code | limit|
|------------------|
|T001       |  120 |
-------------------

-------------------
|party_code | Sal  |
|------------------|
|T001       | 1000 |
-------------------

Но результат будет

---------------------
|<unnamed portal 34>|
---------------------
|<unnamed portal 35>|

1 Ответ

0 голосов
/ 23 октября 2019

Вы пытались назвать свои курсоры ..

...
DECLARE
  ref1 refcursor := 'mycursor1' ;
  ref2 refcursor := 'mycursor2' ;
...

.. и получить результаты, используя их имена ..

SELECT * FROM "User"('T001');

BEGIN; 
  FETCH ALL FROM mycursor2;
  FETCH ALL FROM mycursor1;
END;


FETCH ALL FROM mycursor2;
 code | Sal  
------+------
 T001 | 1000
(1 row)

postgres=# FETCH ALL FROM mycursor1;
 code | limit 
------+-------
 T001 |   120
(1 row)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...