oracle 包遊標使用

包遊標即在包頭聲明部分定義遊標頭,即遊標的定義,把實現部分留給包體來完成,調用時可以通過包來調用,這樣方便共享遊標,實際實現功能類似視圖。

  • 示例

  • 包頭定義

create or replace package mypackage is
cursor cur_employee(deptno in employee.departmentno%type) return employee%rowtype; --遊標的定義一定要包含return returnType
end;
  • 包體定義

create or replace package body mypackage is
cursor cur_employee(deptno in employee.departmentno%type) return employee%rowtype 
is select * from employee where departmentno=deptno;
end;

  • 調用

declare 
  item employee%rowtype;
begin
  if mypackage.cur_employee%isopen then --因爲包遊標作爲共享遊標,一定要用完關閉,用前判斷是否已打開
    close mypackage.cur_employee;
  end if;
  open mypackage.cur_employee('005');
  loop
    fetch mypackage.cur_employee into  item;
    exit when mypackage.cur_employee%notfound;
    dbms_output.put_line(item.employeename); 
  end loop;
  close mypackage.cur_employee; ---用完關閉
end;

執行結果


黃奮
王加紅
章常勇
李紅


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