今天有人在問proc返回cursor的問題,下面給個示例
通過out返回cursor
CREATE OR REPLACE PROCEDURE getcity(v_citycode IN VARCHAR2,
ref_cursor OUT SYS_REFCURSOR AS
BEGIN
OPEN ref_cursor FOR
SELECT * FROM emp WHERE deptno = v_citycode;
END;
SET serveroutput on
DECLARE
v_ref_cursor SYS_REFCURSOR;
v_emp emp%ROWTYPE;
BEGIN
getcity(10, v_ref_cursor);
LOOP
FETCH v_ref_cursor
INTO v_emp;
EXIT WHEN v_ref_cursor%NOTFOUND;
dbms_output.put_line('empno:' || v_emp.empno || ' ename:' || v_emp.ename);
END LOOP;
END;
/
結果
SQL> SET serveroutput on
SQL> DECLARE
2 v_ref_cursor SYS_REFCURSOR;
3 v_emp emp%ROWTYPE;
4 BEGIN
5 getcity(10, v_ref_cursor);
6 LOOP
7 FETCH v_ref_cursor
8 INTO v_emp;
9 EXIT WHEN v_ref_cursor%NOTFOUND;
10 dbms_output.put_line('empno:' || v_emp.empno || ' ename:' || v_emp.ename);
11 END LOOP;
12 END;
13 /
empno:7782 ename:CLARK
empno:7839 ename:KING
empno:7934 ename:MILLER
PL/SQL procedure successfully completed