我想从另一个SP调用一个SP,该SP返回一个游标“ n”次,并使用游标读取其信息。
对于Oracle PL SQL中的一个SP,我具有以下代码:
create or replace procedure USP_FALTAN_REPORTE(cur_OUT out REF CURSOR) as
vFaltantes_SP1 REF CURSOR
vNumProyeto NUMBER;
vTemporalTable NUMBER;
BEGIN
DECLARE
CURSOR proyectos is
SELECT DISTINCT PROYECTO FROM TB_PROYECTOS;
BEGIN
FOR c1 in proyectos loop
dbms_output.put_line('# proyecto: ' || c1.proyecto);
vNumProyeto := c1.proyecto;
USP_FALTANTES(vNumProyeto , vFaltantes_SP1);
end loop;
end;
end;
我的问题是如何从SP USP_FALTANTES返回的游标vFaltantes_SP1中获取信息?
当我对USP_FALTANTES进行测试时,这也会返回类型为ref cursor的游标。
我已经尝试过类似的东西:
BEGIN
OPEN vFaltantes_SP1;
LOOP
FETCH vFaltantes_SP1 BULK COLLECT
INTO vTemporalTable;
CLOSE vFaltantes_SP1;
dbms_output.put_line(vTemporalTable.First);
END LOOP;
END;
但是Oracle显示此错误:
PLS-00382:表达式的类型错误
该错误在OPEN vFaltantes_SP1中标记;
有人能帮我吗。
谢谢 :)
您应该删除打开的光标行,请尝试以下操作:
BEGIN
LOOP
FETCH vFaltantes_SP1 BULK COLLECT
INTO vTemporalTable limit 1000;
END LOOP;
CLOSE vFaltantes_SP1;
for n in vTemporalTable.first .. vTemporalTable.last loop
dbms_output.put_line(vTemporalTable(n));
end loop;
END;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句