Как может `RETURN TABLE (столбцы)` быть эквивалентным использованию одного или нескольких параметров `OUT` и пометить функцию как возвращающую запись` SETOF`? - PullRequest
0 голосов
/ 27 июня 2018

В документе PostgreSQL написано

Существует еще один способ объявить функцию SQL возвращающей набор, который заключается в использовании синтаксиса RETURNS TABLE(columns). Это эквивалентно использованию одного или нескольких OUT параметров плюс маркировка функции как возвращение SETOF записи (или SETOF тип одного выходного параметра, в зависимости от ситуации).

Не могли бы вы объяснить, как RETURN TABLE(columns) может быть эквивалентно:

  • с использованием одного или нескольких OUT параметров и

  • маркировка функции как возвращающая SETOF запись (или SETOF тип одного выходного параметра, в зависимости от ситуации)

Спасибо.

1 Ответ

0 голосов
/ 28 июня 2018

Эти функции эквивалентны:

create type my_type as (id int, str text);

create or replace function function_returning_setof(n int)
returns setof my_type language sql as $$
    select i, i::text
    from generate_series(1, n) i;
$$;

create or replace function function_returning_table(n int)
returns table(id int, str text) language sql as $$
    select i, i::text
    from generate_series(1, n) i;
$$;

create or replace function function_with_out_params(in n int, out id int, out str text)
returns setof record language sql as $$
    select i, i::text
    from generate_series(1, n) i;
$$;

DbFiddle.

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