Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/07/2012, 08:30
rcastellanossuarez
 
Fecha de Ingreso: enero-2011
Mensajes: 74
Antigüedad: 13 años, 10 meses
Puntos: 4
problema oracle

Hola atodos los amigos de foros del web:
tengo el siguiente problema

ORA-00604: se ha producido un error a nivel 1 de SQL recursivo
ORA-01000: número máximo de cursores abiertos excedido
ORA-00604: se ha producido un error a nivel 1 de SQL recursivo
ORA-01000: número máximo de cursores abiertos excedido
ORA-01000: número máximo de cursores abiertos excedido

estos problemas me están surgiendo en mi aplicación java pero son errores oracle
tengo la siguiente duda:
no se si deba cerrar el cursor oracle siguiente o eso es automatico y por eso me este dando problemas cuando uso functions oracle como estas:

igual el error me lo da cuando se procesan grandes cantidades en mi aplicacion o sea se llama muchas veces functions como esta

Código PHP:
FUNCTION CAUSANTES_VIGENTESpRUT_BENEFICIARIO IN NUMBER)
   RETURN  
sqlcur IS            

      cRetorno sqlcur
;

   
BEGIN
      OPEN cRetorno 
FOR
             
SELECT c.per_rut,    -- rut beneficiario
             p
.per_digito,        -- dv beneficiario
             c
.cfa_rut            rutCausante,             -- rut causante
             c
.cfa_digito         dvCausante,              -- dv causante 
             c
.cfa_nombre         nombreCausante,          -- nombre causante
             t
.tcs_tipcau         codigoTipoCausante,      -- cdigo tipo causante      
             decode
(c.tcf_tipo'MATERNAL'21)  codigoBeneficio,  -- codigo beneficio
             c
.cfa_fecnac         fechaNacCausante,        -- fecha nacimiento causante
             c
.cfa_sexo           sexo                     -- sexo causante
      FROM   saf_carga   c
,  
             
afi_persona p,
             
saf_tipparen t
      WHERE  c
.per_rut     pRUT_BENEFICIARIO               -- rut beneficiario
      
AND    p.per_rut     c.per_rut 
      
AND    t.tpr_paren   c.tpr_paren
      
AND    c.cfa_rut<>0
      
AND    c.cfa_rut is not null;      
       
      RETURN 
cRetorno;

   
END CAUSANTES_VIGENTES
gracias de antemano