定义了一个存储过程
procedure GetDate(
aParam in varchar2,
aExesql in out varchar2,
aReturnSet out sys_refcursor
) is
begin
select sysdate into aExesql from dual;
open aReturnSet for 'select sysdate today from dual';
end;
测试的时候执行:
set serveroutput on;
declare
tcursor sys_refcursor;
vSql varchar2(32700);
begin
vSql := 'aa';
execute immediate 'begin GetDate(''aaa'', :V1, :V2); end;' using in out vSql, out tcursor;
dbms_output.put_line(vSql);
end;
/
运行结果:
SQL> declare
2 tcursor sys_refcursor;
3 vSql varchar2(200);
4 begin
5 vSql := 'aa';
6 execute immediate 'begin GetDateTest(''aaa'', :1, :2); end;' using in out vSql, out tcursor
;
7 dbms_output.put_line(vSql);
8 end;
9 /
declare
*
ERROR 位于第 1 行:
ORA-03113: 通信通道的文件结束
procedure GetDate(
aParam in varchar2,
aExesql in out varchar2,
aReturnSet out sys_refcursor
) is
begin
select sysdate into aExesql from dual;
open aReturnSet for 'select sysdate today from dual';
end;
测试的时候执行:
set serveroutput on;
declare
tcursor sys_refcursor;
vSql varchar2(32700);
begin
vSql := 'aa';
execute immediate 'begin GetDate(''aaa'', :V1, :V2); end;' using in out vSql, out tcursor;
dbms_output.put_line(vSql);
end;
/
运行结果:
SQL> declare
2 tcursor sys_refcursor;
3 vSql varchar2(200);
4 begin
5 vSql := 'aa';
6 execute immediate 'begin GetDateTest(''aaa'', :1, :2); end;' using in out vSql, out tcursor
;
7 dbms_output.put_line(vSql);
8 end;
9 /
declare
*
ERROR 位于第 1 行:
ORA-03113: 通信通道的文件结束
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货