/* 请使用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; (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|