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:
cuando corro esto me genera el error.. Ora-06531select * from table (fun_retDatos)
Quien me pueda ayudar muchas
gracias