Re: A question about "table function" - Mailing list pgsql-general

From Joe Conway
Subject Re: A question about "table function"
Date
Msg-id 3E7E484C.8090208@joeconway.com
Whole thread Raw
In response to A question about "table function"  ("Yuan Lin" <yuanlin@mail.nwpu.edu.cn>)
List pgsql-general
Yuan Lin wrote:
> CREATE TABLE foo (fooid int, foosubid int, fooname text);
>>>As I say it, foo is already a set of columns.

"setof" refers to returning multiple rows. Multiple columns is referred
to as "composite type".

> CREATE FUNCTION getfoo(int) RETURNS setof foo AS '
>     SELECT * FROM foo WHERE fooid = $1;
> ' LANGUAGE SQL;
>
>>>here return type should be "setof setof foo".

No, the documentation is correct.

> Can I rewrite the definition as follows:
>
> CREATE TYPE foo (fooid int, foosubid int, fooname text);
>
> CREATE FUNCTION getfoo(int) RETURNS setof foo AS '
>     SELECT * FROM foo WHERE fooid = $1;
> ' LANGUAGE SQL;

You can do this *if* you don't have a table by the same name. If you do,
the CREATE TYPE will fail (but you can always try it if you need to
prove it to yourself).

Joe


pgsql-general by date:

Previous
From: Joe Conway
Date:
Subject: Re: Function returning SETOF RECORD
Next
From: Bruce Momjian
Date:
Subject: Re: Function returning SETOF RECORD]