From: | Emanuel Calvo Franco <postgres(dot)arg(at)gmail(dot)com> |
---|---|
To: | Gustavo Vaccaro <gustavo_vaccaro(at)fibertel(dot)com(dot)ar> |
Cc: | arpug(at)postgresql(dot)org |
Subject: | Re: Llamadas recursivas en funciones de Base de Datos |
Date: | 2011-02-10 16:06:51 |
Message-ID: | AANLkTimngcbckwzJ2R2BNUxtCkREbumAHLhz0K4azY5E@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | arpug |
El día 10 de febrero de 2011 15:06, Gustavo Vaccaro
<gustavo_vaccaro(at)fibertel(dot)com(dot)ar> escribió:
> Hola,
> tengo una funcion (fn_acumuxcuenta) en postgres 8.4 que hace una llamada
> recursiva a si misma.
>
> *** FUNCION fn_acumuxcuenta *****
> declare c_monto decimal(15,2);
> declare c_ctamadre scroll cursor for select id_cuenta from
> plancta where id_nroemp = arg_nroemp and id_ctamadre = arg_cuenta and
> id_cuenta <> id_ctamadre order by id_cuenta asc;
> BEGIN
> .....
> *** mas codigo ****
> .....
> linea 23: open c_ctamadre;
> loop
> fetch next from c_ctamadre into s_cuenta;
> if not found then
> exit;
> end if;
> linea 29:
> c_monto=c_monto+fn_acumuxcuenta(arg_nroemp,arg_nroserie,s_cuenta,arg_fecdes,arg_fechas,arg_dh);
> end loop;
> close c_ctamadre;
>
> return(c_monto);
> END
>
> Esta funcion la utilizo en una vista para que me devuelva el monto total
> acumulado.
> Cuando ejecuto la vista me tira el siguiente error:
>
>
> ERROR: el cursor «c_ctamadre» ya está en uso
> CONTEXT: función PL/pgSQL «fn_acumuxcuenta» en la línea 23 en OPEN
> función PL/pgSQL «fn_acumuxcuenta» en la línea 29 en asignación
>
> ********** Error **********
>
> ERROR: el cursor «c_ctamadre» ya está en uso
> Estado SQL:42P03
> Contexto:función PL/pgSQL «fn_acumuxcuenta» en la línea 23 en OPEN
> función PL/pgSQL «fn_acumuxcuenta» en la línea 29 en asignación
>
> Agradeceria alguna ayuda para intentar solucionar el problema.
>
> La funcion proviene de una migracion de Sybase Adaptive Server Anywhere y la
> recusividad funcionaba perfecto.
>
Pero ambas bases funcionan totalmente distintas respecto al manejo de cursores.
Podrías pegar más detalles del código? Quizás se pueda implementar de
otra manera....
--
--
Emanuel Calvo
DBA
From | Date | Subject | |
---|---|---|---|
Next Message | Gustavo Vaccaro | 2011-02-11 11:25:13 | Re: Llamadas recursivas en funciones de Base de Datos |
Previous Message | Gustavo Vaccaro | 2011-02-10 14:17:00 | Llamadas recursivas en funciones de Base de Datos |