Хранимая процедура Postgres 11 не возвращает результаты - PullRequest
0 голосов
/ 15 декабря 2018

В Postgres 11 хранимые процедуры не предназначены для возврата наборов результатов?Потому что, когда мы запускаем следующее, оно говорит, что оно выполнено успешно, но результаты не возвращаются.

CREATE OR REPLACE PROCEDURE test()
LANGUAGE sql
AS $$
  SELECT * from aTable;
$$;

call test();

1 Ответ

0 голосов
/ 08 мая 2019

Процедуры Postgresql могут возвращать самое большее одно значение:

CREATE PROCEDURE test (INOUT x int)
LANGUAGE sql
AS $$
    SELECT x;
$$;

# call test (1);
 x
---
 1
(1 row)

Postgresql функции гораздо более гибкие:

create or replace function test()
RETURNS setof atable
language sql
as $$
select * from atable;
$$;

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

...