Getting into PL/pgSQL…
I'm still learning the syntax. Sometimes, I'd run into this error message:
ERROR: cannot use RETURN QUERY in a non-SETOF function
This sounds sort of cryptic and I could not find information in the Postgres documentation. Hence the question:
- What's a non-SETOF function?
And likewise, assuming there's such a thing, what's a SETOF function?
It's a function returning a single (scalar) value, e.g. an
integeror avarchar, e.g.upper()is a "non-SETOF" function, it only returns a single value. So a function that is e.g. defined asreturns integercan't return the complete result of a SELECT query, it needs to usereturn 42;but it can't usereturn query ...;It's a function that returns a result set - similar to a table (it's typically declared as
returns table (...). And you can use it like a table: