Re: proposal: table functions and plpgsql
От | Pavel Stehule |
---|---|
Тема | Re: proposal: table functions and plpgsql |
Дата | |
Msg-id | 162867790805211406i54e9c279gb2685e13e4658674@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: proposal: table functions and plpgsql (Hannu Krosing <hannu@krosing.net>) |
Ответы |
Re: proposal: table functions and plpgsql
|
Список | pgsql-hackers |
2008/5/21 Hannu Krosing <hannu@krosing.net>: > On Wed, 2008-05-21 at 13:31 -0400, Merlin Moncure wrote: >> On Wed, May 21, 2008 at 1:28 PM, Hannu Krosing <hannu@krosing.net> wrote: >> >> In my proposal I don't create any default variables. Result type is >> >> only virtual - I don't need write it to system directory. I thing it's >> >> better than using some specific predeclared type as RESULTTYPE OR >> >> RESULTSET. >> > >> > How is this different from using OUT params and RETURNS SETOF RECORD ? >> >> *) you reference output variables via rowtype (r.var vs. var) > > As I'm currently working on updating another pl (pl/python), I'd like to > know how will this affect get_call_result_type() defined in funcapi.h. > will there be an extra parameter for record name there ? no > >> *) seems cleaner to separate in/out variables so add/drop function are >> symmetric. > > they are kind of symmetric already :) > > hannu=# drop function outsetof2py(n integer, OUT i integer, OUT j > integer); > DROP FUNCTION > > >> Also, >> What about: >> >> CREATE OR REPLACE FUNCTION foo(m integer) >> RETURNS TABLE (a integer, b integer) AS $$ >> -- DECLARE r foo; -- make alias of r to foo optional >> BEGIN >> FOR i IN 1..m LOOP >> foo.a := i; foo.b := i + 1; >> [...] >> >> or >> RETURNS TABLE r(a integer, b integer) AS $$ > > rather "..FUNCTION foo(...) ... RETURNS TABLE r(..." as else it will be > hard to do recursive functions. > >> merlin >> > >
В списке pgsql-hackers по дате отправления: