oracle 存储过程 传出参数是cursor 没有open 异常处理
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: 未执行语句句柄
。
(
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: 未执行语句句柄
。
...全文
相关推荐
全面解析Oracle Procedure 基本语法
IN OUT` 参数用于传出或传入传出值。
oracle的存储过程如何返回结果集
#### 二、存储过程返回结果集的原理在Oracle中,存储过程可以通过引用游标(Ref Cursor)来返回结果集。
Java获取Oracle存储过程返回的Cursor
首先,我们需要创建一个Oracle存储过程,该过程定义了一个名为CURSOR_RESULT的REF CURSOR类型。
oracle函数调用存储过程
#### 注意事项- **参数传递**:确保函数和存储过程之间的参数正确匹配。- **错误处理**:考虑添加异常处理逻辑,以便更好地管理可能发生的错误情况。
Oracle存储过程游标用法分析
**打开游标**: 在使用游标之前,需要通过`OPEN`语句来打开它,使得我们可以开始读取数据: ```sql open temp_cursor; ```4.


基础和管理
