Re: Cast as compound type
От | korry |
---|---|
Тема | Re: Cast as compound type |
Дата | |
Msg-id | 47F17153.60507@enterprisedb.com обсуждение исходный текст |
Ответ на | Cast as compound type (David Fetter <david@fetter.org>) |
Ответы |
Re: Cast as compound type
|
Список | pgsql-hackers |
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 <korryd@enterprisedb.com> EnterpriseDB http://www.enterprisedb.com
В списке pgsql-hackers по дате отправления: