Re: return next in recursive function
От | Stephan Szabo |
---|---|
Тема | Re: return next in recursive function |
Дата | |
Msg-id | 20031002080057.R62929@megazone.bigpanda.com обсуждение исходный текст |
Ответ на | return next in recursive function (Petr Bravenec <pbravenec@solartec.cz>) |
Ответы |
Re: return next in recursive function
|
Список | pgsql-general |
On Thu, 2 Oct 2003, Petr Bravenec wrote: > > I have found that when I use the RETURN NEXT command in recursive function, > not all records are returned. The only records I can obtain from function > are records from the highest level of recursion. Does exist some > work-around? > create or replace function foo (integer) > returns setof foo as ' > declare pid alias for $1; > declare rec RECORD; > BEGIN > FOR rec in select * from foo > where foo.pid=pid LOOP > return next rec; > raise warning ''uid=% pid=%'',rec.uid,rec.pid; > select into rec * from foo (rec.uid); Shouldn't you be looping over these results in order to return them, something like FOR rec2 in select * from foo(rec.uid) LOOP return next rec2; END LOOP; Otherwise, why should the results from the other call become results from your call (what if you want to process them and not return all of them, or what if it's a function with a different type?) > END LOOP; > return null; > end; > ' language 'plpgsql';
В списке pgsql-general по дате отправления: