Что такое функция без SETOF?
Это функция, возвращающая одно (скалярное) значение, например, integer
или varchar
, например,
select upper('foo')`
upper()
является функцией «не SETOF», она возвращает только одно значение.Таким образом, функция, определенная, например, как returns integer
, не может вернуть полный результат запроса SELECT, ей нужно использовать return 42;
, но она не может использовать return query ...
;
что такое функция SETOF?
Это функция, которая возвращает набор результатов - аналогично таблице (обычно она объявлена как returns table (...)
. И вы можете использовать ее как таблицу:
select *
from some_set_returning_function();