1. 程式人生 > >oracle 返回值為遊標的儲存過程

oracle 返回值為遊標的儲存過程

先建立一個包

create or replace package MYPACKAGE as
       --定義包中的遊標變數
       type empcursor is ref cursor;
       --定義包中的方法
       procedure queryEmpList(dno in number,empList out empcursor);
end MYPACKAGE;

建立一個包體

--建立一個包體
create or replace package body MYPACKAGE is
--實現包的方法
  procedure queryEmpList(dno in number,empList out empcursor) as
  begin
    --將查詢資料封裝裝入遊標
     open empList for select * from emp where deptno = dno;
  end queryEmpList;

 
end MYPACKAGE;

pl/sql呼叫

-- Created on 2018/10/11 by 19135 
declare 
   --定義接收返回值的遊標
  cue sys_refcursor;
  --迴圈時使用的變數
  e emp%rowtype;
begin
  --通過包名呼叫該包下面的方法
  MYPACKAGE.queryEmpList(30,cue);
  loop
    fetch cue
     into e;
     exit when cue%notfound;
     --迴圈控制檯輸出遊標中的值
       dbms_output.put_line(e.ename);
     
     end loop;
  
end;