Llamadas recursivas en funciones de Base de Datos

From: Gustavo Vaccaro <gustavo_vaccaro(at)fibertel(dot)com(dot)ar>
To: arpug(at)postgresql(dot)org
Subject: Llamadas recursivas en funciones de Base de Datos
Date: 2011-02-10 14:17:00
Message-ID: 4D53F35C.8020101@fibertel.com.ar
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: arpug

Me olvide de aclarar que la funcion esta creada con PL/pgSQL

-------- Mensaje original --------
Asunto: Llamadas recursivas en funciones de Base de Datos
Fecha: Thu, 10 Feb 2011 11:06:19 -0300
De: Gustavo Vaccaro <gustavo_vaccaro(at)fibertel(dot)com(dot)ar>
A: arpug(at)postgresql(dot)org

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.

Saludos

--

Gustavo J. Vaccaro
http://www.gjv.com.ar

Browse arpug by date

  From Date Subject
Next Message Emanuel Calvo Franco 2011-02-10 16:06:51 Re: Llamadas recursivas en funciones de Base de Datos
Previous Message Gustavo Vaccaro 2011-02-10 14:06:19 Llamadas recursivas en funciones de Base de Datos