Postgres 11 хранимая процедура не возвращает результаты

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

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

call test();

0 ответов

Процедуры 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;
$$;

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

Другие вопросы по тегам