Re: Multiple return 'columns' from postgre pl/pgsql

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Multiple return 'columns' from postgre pl/pgsql
Дата
Msg-id 14372.1092061391@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: Multiple return 'columns' from postgre pl/pgsql  (Steve Tucknott <steve@retsol.co.uk>)
Ответы Re: Multiple return 'columns' from postgre pl/pgsql  (Steve Tucknott <steve@retsol.co.uk>)
Список pgsql-novice
Steve Tucknott <steve@retsol.co.uk> writes:
> Does the 'rowtype' have to exist as a definition in the database?

In the form I showed, yes.

> Would returning a record type work -

Only if you're prepared to specify the actual record type in the calling
query.  The point is that in

    select * from myfunc(...);

the parser has to have some way of understanding what * expands to,
and it needs the info in advance of calling the function.  So you
either need to return a named rowtype, or return record and specify
what you're expecting in the call.  From memory it's something like

    select * from myfunc(...) AS (f1 int, f2 text, ...);

but see the docs.  In practice I think the named rowtype is easier in
99% of cases.  The returns-record case is really meant for functions
that can actually return different rowtypes depending on the parameters
they are given, like dblink() does.  If you're thinking of doing something
like that, you probably shouldn't be asking about it on the novice list ;-)

            regards, tom lane

В списке pgsql-novice по дате отправления:

Предыдущее
От: Stephan Szabo
Дата:
Сообщение: Re: Design question regarding arrays
Следующее
От: "Sean Davis"
Дата:
Сообщение: Re: Design question regarding arrays