什么是“非SETOF功能”?

时间:2019-04-15 11:42:17

标签: postgresql plpgsql

进入PL / pgSQL ...

我仍在学习语法。有时,我会遇到以下错误消息:

  

错误:无法在非SETOF函数中使用RETURN QUERY

这听起来有点神秘,我在Postgres文档中找不到信息。因此,问题是:

  • 什么是非SETOF函数?

同样,假设有这样的事情,什么是SETOF函数?

1 个答案:

答案 0 :(得分:1)

  

什么是非SETOF函数?

这是一个返回单个(标量)值的函数,例如integervarchar,例如

select upper('foo')` 

upper()是一个“非SETOF”函数,它仅返回一个值。所以一个功能是定义为returns integer不能返回SELECT查询的完整结果,它需要使用return 42;但不能使用return query ...;


  

什么是SETOF函数?

这是一个返回结果集的函数-与表类似(通常声明为returns table (...)。您可以像表一样使用它:

select *
from some_set_returning_function();