Что такое «не-SETOF функция»? - PullRequest
0 голосов
/ 15 апреля 2019

Получение в PL / pgSQL…

Я все еще изучаю синтаксис. Иногда я сталкивался с таким сообщением об ошибке:

ОШИБКА: невозможно использовать ВОЗВРАТ ЗАПРОСА в функции без SETOF

Это звучит немного загадочно, и я не смог найти информацию в документации Postgres. Отсюда вопрос:

  • Что такое функция без SETOF?

И также, если есть такая вещь, что такое функция SETOF?

1 Ответ

1 голос
/ 15 апреля 2019

Что такое функция без SETOF?

Это функция, возвращающая одно (скалярное) значение, например, integer или varchar, например,

select upper('foo')` 

upper() является функцией «не SETOF», она возвращает только одно значение.Таким образом, функция, определенная, например, как returns integer, не может вернуть полный результат запроса SELECT, ей нужно использовать return 42;, но она не может использовать return query ...;


что такое функция SETOF?

Это функция, которая возвращает набор результатов - аналогично таблице (обычно она объявлена ​​как returns table (...). И вы можете использовать ее как таблицу:

select *
from some_set_returning_function();
...