Re: pl-pgsql, recursion and cursor contexting

Поиск
Список
Период
Сортировка
От Pavel Stehule
Тема Re: pl-pgsql, recursion and cursor contexting
Дата
Msg-id 162867790809290727p28beccd3m9843654fc025ed67@mail.gmail.com
обсуждение исходный текст
Ответ на pl-pgsql, recursion and cursor contexting  ("Gauthier, Dave" <dave.gauthier@intel.com>)
Список pgsql-general
Hello

every call of plpgsql function has own result, there are not any
shared result, so you need forward result from deeper call to up.

http://www.pgsql.cz/index.php/PL/pgSQL_(en)#Recursive_call_of_SRF_functions

regards
Pavel Stehule

2008/9/29 Gauthier, Dave <dave.gauthier@intel.com>:
> Hi:
>
>
>
> I'm in the business of writting recursive PL-Pgsql functions.  I need to
> know what happens to the data stream from a select cursor inside of which
> the recursive call is made.  For example....
>
>
>
>
>
>
>
> create table int_stream (num integer);
>
> insert into int_stream (num) values (1);
>
> insert into int_stream (num) values (2);
>
> insert into int_stream (num) values (3);
>
> insert into int_stream (num) values (4);
>
> insert into int_stream (num) values (5);
>
>
>
> create or replace function my_factorial(integer) returns insteger as $$
>
>
>
>   in_int alias for $1;
>
>   x integer;
>
>   rec record;
>
>
>
> begin
>
>
>
>   if(in_int = 1) then
>
>     return(1);
>
>   end if;
>
>
>
>   for rec in    select num from int_stream where num <= in_int
>
>   loop
>
>     x := in_int * my_factorial(in_int - 1);
>
>   end loop;
>
>
>
>   return(x);
>
> end;
>
> $$ language plpgsql;
>
>
>
> This comes up witht he right answer.  IOW, making the recursive call from
> within the "for rec in..." loop doesn't seem to destroy the data streams
> from earlier calls.  I just need to make sure that this will always be the
> case and that getting the correct result in this example is not just an
> artifact of it's simplicity.  I know, for example, this was a no-no in
> Oracle.  You had to stuff arrays with the resuts from looping in cursors,
> and then make the recursive call in a subsaquent loop on the arrays.
>
>
>
> Thanks
>
> -dave
>
>
>
>

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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: pl-pgsql, recursion and cursor contexting
Следующее
От: "Gauthier, Dave"
Дата:
Сообщение: Re: pl-pgsql, recursion and cursor contexting