Re: proposal: table functions and plpgsql
От | Hannu Krosing |
---|---|
Тема | Re: proposal: table functions and plpgsql |
Дата | |
Msg-id | 1211393687.7045.17.camel@huvostro обсуждение исходный текст |
Ответ на | Re: proposal: table functions and plpgsql ("Merlin Moncure" <mmoncure@gmail.com>) |
Ответы |
Re: proposal: table functions and plpgsql
|
Список | pgsql-hackers |
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 ? > *) 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 по дате отправления: