用proc返回cursor

今天有人在問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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章