Thread: returning dynamic record
Just wondering, if it is possible to do the following create function foo() RETURNS Record(int, varchar, int) then inside of the function return a set int, varchar, int. Then be able to call the function select * From foo() instead of having to write select * from foo() as (int, varchar, int) or declaring a type?
nick <nick@walkerdatanet.com> writes: > Just wondering, if it is possible to do the following > create function foo() RETURNS Record(int, varchar, int) OUT parameters (in reasonably recent PG releases). regression=# create function foo (f1 out int, f2 out varchar, f3 out int) as $$ select 42, 'foo'::varchar, 43 $$ language sql; CREATE FUNCTION regression=# select * from foo(); f1 | f2 | f3 ----+-----+---- 42 | foo | 43 (1 row) regards, tom lane
Il Wednesday 07 November 2007 06:35:55 Tom Lane ha scritto: > nick <nick@walkerdatanet.com> writes: > > Just wondering, if it is possible to do the following > > create function foo() RETURNS Record(int, varchar, int) > > OUT parameters (in reasonably recent PG releases). > > regression=# create function foo (f1 out int, f2 out varchar, f3 out int) > as $$ select 42, 'foo'::varchar, 43 $$ language sql; > CREATE FUNCTION > regression=# select * from foo(); > f1 | f2 | f3 > ----+-----+---- > 42 | foo | 43 > (1 row) > > regards, tom lane Maybe create function foo (f1 out int, f2 out varchar, f3 out int) returns setof record as $body$ ... will return the set. -- Reg me Please