关于oracle中procedure和function返回cursor类型的变量
2017-01-05 14:18
681 查看
/*
请使用scott/tiger用户下的emp表进行测试
*/
/*
注意:
在使用游标作为返回值时,要注意再动态绑定时打开游标,然后返回。
在使用时直接使用游标,不需要再次打开,故而只能使用传统的open/close方式来使用游标,
for循环使用游标时,会牵扯到打开游标,会出现重复打开的错误,所以不能使用。
*/
–在过程中返回类型为游标变量类型
CREATE OR REPLACE PROCEDURE findset_emp(v_deptno IN NUMBER,
c_cursor OUT SYS_REFCURSOR) AS
BEGIN
OPEN c_cursor FOR –打开游标,在创建过程中绑定
SELECT *
FROM emp
WHERE deptno = v_deptno;
END;
–测试过程返回游标类型是否正确
DECLARE v_cur SYS_REFCURSOR; emp_rec emp%ROWTYPE;
BEGIN
findset_emp(10, v_cur); LOOP FETCH v_cur INTO emp_rec; EXIT WHEN v_cur%NOTFOUND; dbms_output.put_line(‘—————’);
END LOOP; CLOSE v_cur;
END;
–创建函数,返回值为游标类型
CREATE OR REPLACE FUNCTION return_cur_test(v_deptno VARCHAR2) RETURN SYS_REFCURSOR IS
type_cur SYS_REFCURSOR;
BEGIN
OPEN type_cur FOR SELECT * FROM emp WHERE deptno = v_deptno; RETURN type_cur;
END;
–测试是否正确
DECLARE v_cur SYS_REFCURSOR; emp_rec emp%ROWTYPE;
BEGIN
v_cur := return_cur_test(&deptno);
LOOP EXIT WHEN v_cur%NOTFOUND; FETCH v_cur INTO emp_rec; dbms_output.put_line(‘—————’);
END LOOP; CLOSE v_cur;
END;
请使用scott/tiger用户下的emp表进行测试
*/
/*
注意:
在使用游标作为返回值时,要注意再动态绑定时打开游标,然后返回。
在使用时直接使用游标,不需要再次打开,故而只能使用传统的open/close方式来使用游标,
for循环使用游标时,会牵扯到打开游标,会出现重复打开的错误,所以不能使用。
*/
–在过程中返回类型为游标变量类型
CREATE OR REPLACE PROCEDURE findset_emp(v_deptno IN NUMBER,
c_cursor OUT SYS_REFCURSOR) AS
BEGIN
OPEN c_cursor FOR –打开游标,在创建过程中绑定
SELECT *
FROM emp
WHERE deptno = v_deptno;
END;
–测试过程返回游标类型是否正确
DECLARE v_cur SYS_REFCURSOR; emp_rec emp%ROWTYPE;
BEGIN
findset_emp(10, v_cur); LOOP FETCH v_cur INTO emp_rec; EXIT WHEN v_cur%NOTFOUND; dbms_output.put_line(‘—————’);
END LOOP; CLOSE v_cur;
END;
–创建函数,返回值为游标类型
CREATE OR REPLACE FUNCTION return_cur_test(v_deptno VARCHAR2) RETURN SYS_REFCURSOR IS
type_cur SYS_REFCURSOR;
BEGIN
OPEN type_cur FOR SELECT * FROM emp WHERE deptno = v_deptno; RETURN type_cur;
END;
–测试是否正确
DECLARE v_cur SYS_REFCURSOR; emp_rec emp%ROWTYPE;
BEGIN
v_cur := return_cur_test(&deptno);
LOOP EXIT WHEN v_cur%NOTFOUND; FETCH v_cur INTO emp_rec; dbms_output.put_line(‘—————’);
END LOOP; CLOSE v_cur;
END;
相关文章推荐
- java中调用oracle procedure或者function返回类型的问题
- 在Crystal Report 8中调用Oracle的procedure储存过程,并取得返回的类型为Sys_Refcursor数据表
- Oracle包体,包含存储过程,自定义函数(function),自定义类型(table),用函数返回自定义类型(相当于返回一张表)
- PROCEDURE+FUNCTION返回游标类型输出参数
- Oracle store procedure and Function返回结果集。
- oracle存储过程中使用Ref Cursor强类型游标返回结果集
- Day60-Oracle04 - PLSQL编程、游标cursor、例外exception、存储过程(procedure)、存储函数(function)、java调用存储过程、触发器(trigger)
- Oracle Procedure 用ref cursor来返回记录集
- Oracle Procedure (PL/SQL) 实践归纳(2)之Cursor的使用
- Oracle Procedure 返回结果集
- 如何在Oracle中修改Collection类型的变量。
- 一点点小问题,关于用传址返回值类型API的返回值处理问题
- Ibatis 调用Oracle返回Cursor的函数/过程
- 关于oracle的环境变量设置
- Usage of Cursor in Oracle Procedure
- gx +java 日期型类型的变量在oracle中的注意事项
- Oracle基础学习三:过程PROCEDURE 和函数FUNCTION 的创建及调用
- C语言学习总结 一 关于变量类型
- 关于Oracle的Clob数据类型在Hibernate中的应用
- Oracle基础学习三:过程PROCEDURE 和函数FUNCTION 的创建及调用