oracle 存储过程 传出参数是cursor 没有open 异常处理

system1190 system1190 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
CREATE OR REPLACE PROCEDURE test
(
v_a IN NUMBER DEFAULT NULL ,
cv_1 OUT SYS_REFCURSOR,
cv_2 OUT SYS_REFCURSOR
)
as
begin
open cv_1 for select 'aa' from dual;

if(v_a is not null)then
begin
open cv_2 for select 'bb' from dual;
end;
endif;
end
----------------
如果v_a 是空的话,外面填充dateset时会报"未执行语句句柄" 错误,
但是我就是不想open cv_2 for ,只想dateset有一个table;外面对table.count 做一些业务判断。没法改
,我想实现根据业务有时返回一个table,有时返回两个table
不能让dataset固定总是两个table
但是,如果cv_2不打开的话,就报异常。
我引用的是.net 的
system.data.oracleclient.dll(oracle自己的dll没事,但是不想用那个)
用报这个异常,,报错是由于定义cv_2为输出游标,但没有打开。
引发异常: System.Data.OracleClient.OracleException: ORA-24338: 未执行语句句柄
。
...全文
评论 6
收藏 已收藏
分享
返回顶部
system1190
基础和管理 17,377 成员 95,111 内容