Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Ora-06531

Estas en el tema de Ora-06531 en el foro de Oracle en Foros del Web. hola a todos tengo un problema, con este error yo manejo tablas pl/sql y uso el concepto pipe row. la definicion de las tablas pl ...
  #1 (permalink)  
Antiguo 19/10/2009, 16:26
Avatar de barba negra  
Fecha de Ingreso: mayo-2003
Ubicación: bogota
Mensajes: 91
Antigüedad: 20 años, 11 meses
Puntos: 0
Ora-06531

hola a todos


tengo un problema, con este error yo manejo tablas pl/sql y uso el concepto pipe row. la definicion de las tablas pl es la siguiente

Código:
TYPE pro_typRepCmes IS RECORD
       ( posiprva piobsuim.posiprva%type,
         posiiupr piobsuim.posiiupr%type,
         posidiee piobsuim.posidiee%type,
         posisuim piobsuim.posisuim%type,
         perscodi personal.perscodi%type,
         persnomb varchar2(500),
         persconu personal.PERSCONU%type,
         persfeiv personal.persfeiv%type,
         persfefv personal.PERSFEFV%type,
         --persfeiv varchar2(20),
         --persfefv varchar2(20),
         inimpcer number,
         inimpfac number
     );
TYPE tyRepCmes IS TABLE OF pro_typRepCmes INDEX BY VARCHAR2(500);
 TYPE tyRepCmes1 IS TABLE OF pro_typRepCmes;
 tbRepCmes tyRepCmes;
 tbRepCmesAux tyRepCmes1;

En una funcion cargo las tablas pl y retorno los datos cargados en las tablas con pipe row a continuacion esta el codigo de la carga de las tabblas

Código:
CREATE OR REPLACE FUNCTION fun_retDatos  RETURN tyCmes1  PIPELINED IS
 TYPE cur_typ IS REF CURSOR;
c_cursor    CUR_TYP;
cuCerDoli    CUR_TYP;
tbRepCmes tyRepCmes; 
tbRepCmesAux tyRepCmes1;                       

BEGIN
v_queryCercDoli:='SELECT * FROM TABLA1';
  tbRepCmes.DELETE;
 OPEN cuCerDoli FOR v_queryCercDoli;
       LOOP
       FETCH cuCerDoli INTO filaCertDoli;
       EXIT WHEN cuCerDoli%NOTFOUND;
       sbCondFull:=10||AA123||20;
                                                    tbRepCmes(sbCondFull).posiprva:=filaCertDoli.posiprva;
                                                    tbRepCmes(sbCondFull).posiiupr:=filaCertDoli.posiiupr;
                                                    tbRepCmes(sbCondFull).posidiee:=filaCertDoli.posidiee;
                                                    tbRepCmes(sbCondFull).posisuim:=filaCertDoli.posisuim;
                                                    tbRepCmes(sbCondFull).perscodi:=filaCertDoli.perscodi;
                                                    tbRepCmes(sbCondFull).persconu:=filaCertDoli.persconu;
                                                    tbRepCmes(sbCondFull).persfeiv:=filaCertDoli.persfeiv;
                                                    var.tbRepCmes(sbCondFull).inimpcer:=filaCertDoli.inimpcer;
                                                    var.tbRepCmes(sbCondFull).inimpfac:=filaCertDoli.inimpfac;                                     END LOOP;
CLOSE cuCerDoli;
                     




 IF (tbRepCmes.count() != 0) THEN
sbCondFull:=tbRepCmes.FIRST;                                                                               tbRepCmesAux.DELETE; 
                               LOOP
                                                                                                 
                                  tbRepCmesAux(1).posiprva:=tbRepCmes(sbCondFull).posiprva;
                                  tbRepCmesAux(1).posiiupr:=tbRepCmes(sbCondFull).posiiupr;
                                  tbRepCmesAux(1).posidiee:=tbRepCmes(sbCondFull).posidiee;
                                  tbRepCmesAux(1).posisuim:=tbRepCmes(sbCondFull).posisuim;
                                  tbRepCmesAux(1).perscodi:=tbRepCmes(sbCondFull).perscodi;
                                  tbRepCmesAux(1).persconu:=tbRepCmes(sbCondFull).persconu;
                                  tbRepCmesAux(1).persfeiv:=tbRepCmes(sbCondFull).persfeiv;
                                  tbRepCmesAux(1).inimpcer:=tbRepCmes(sbCondFull).inimpcer;
                                  tbRepCmesAux(1).inimpfac:=tbRepCmes(sbCondFull).inimpfac;

PIPE ROW(tbRepCmesAux(1));
                                                    
EXIT WHEN sbCondFull = tbRepCmes.LAST;                                  
                                  sbCondFull := tbRepCmes.NEXT(sbCondFull);
                               END LOOP;
                   END IF;

                           RETURN;

END fun_retDatos;

EL LLAMADO A LA FUNCION LO HAGO CON EL SIGUIENTE SCRIPT

Código:
select * from table (fun_retDatos)
cuando corro esto me genera el error.. Ora-06531


Quien me pueda ayudar muchas


gracias
__________________
quien se duerme se lo lleva la corriente.......

Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:51.