Получить данные из таблицы с помощью хранимой процедуры PostgreSQL 11.1 - PullRequest
0 голосов
/ 08 января 2019

У меня есть таблица с двумя столбцами cola и colb.

Я хочу сделать выбор столбцов из таблицы, используя хранимую процедуру.

Примечание: я не хочу использовать функцию из-за типа возвращаемого значения.

Попробуйте:

CREATE OR REPLACE PROCEDURE public.sptest()
LANGUAGE sql

AS $BODY$
         select cola from test;
$BODY$;

Процедура вызова:

call sptest()

Выход:

Ничего в выводе данных.

Окно сообщения показывает:

CALL

Query returned successfully in 147 msec. 

1 Ответ

0 голосов
/ 08 января 2019

Вы должны определить refcursor как параметр inout, чтобы сделать это:

CREATE OR REPLACE PROCEDURE public.sptest(result_data inout refcursor)
LANGUAGE plpgsql
AS $BODY$
begin
  open result_data for select cola from test;
end;
$BODY$;

Тогда назовите это так:

call sptest('data');

Переданный параметр - это имя возвращаемого refcursor.

Отображается ли результат, зависит от используемого вами клиента SQL.

В psql вам нужно сделать что-то вроде этого:

begin; -- not required if you turned off autocommit
call sptest('data');
fetch all in "data";
commit;

Некоторые клиенты SQL сделают это автоматически для вас.

...