David Fetter wrote:
I'd like to take a whack at making set-returning functions returning
SETOF RECORD a little more fun to use.  Let's imagine that we have a
table foo and a function returning SETOF RECORD that can return foos.
The call might look something like:

SELECT a, b, c
FROM f(ROW OF foo)
WHERE ...;

This would make it much easier and less error-prone to use SETOF
RECORD.
David, it sounds like you really want to declare the return type of the function? In your above example, you want to say that, in this particular invocation, function f() returns a SETOF foo's. Is that correct?

If you were to create function that returns a RECORD (not a SETOF RECORD), you would call it like this:

   SELECT * FROM f() AS (column1 type1, column2 type2, column3 type3);

In your case, I think you want to declare the return type using an explicitly defined composite type (possibly a table row); which would imply syntax such as:

   SELECT * FROM f() AS (foo);
      or
   SELECT * FROM f() AS (foo.*);

So, it seems like you want the syntax to look more like:

   SELECT a,b,c, FROM f() AS (SETOF foo);

Does that make sense to you? Your original syntax implied that the "ROW OF foo" was somehow related to the function arguments. -- Korry


--

 Korry Douglas  <[EMAIL PROTECTED]>
 EnterpriseDB    http://www.enterprisedb.com


--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to