关于Oracle游标out参数多层调用的BUG,ORA-06504

数据库版本

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit

测试代码

declare

p_cur sys_refcursor;

v_ename varchar2(50);

procedure pro_1(p_cur out sys_refcursor) as

begin

--子程序1

open p_cur for

select ename from scott.emp;

end;

 

procedure pro_2(p_cur out sys_refcursor) as

begin

--子程序2

pro_1(p_cur);

end;

 

begin

--主程序

pro_2(p_cur);

fetch p_cur

into v_ename;

end;

运行报错:

ORA-06504: PL/SQL: 结果集变量或查询的返回类型不匹配

经调试发现在主程序fetch时出错。

同样代码在数据库 Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit 版本下正常执行。

原文地址:https://www.cnblogs.com/mellowsmile/p/6513902.html