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