一.Oracle的Cursors概念:
游標:用來查詢數據庫,獲取記錄集合(結果集)的指針,可以讓開發者一次訪問一行結果集,在每條結果集上作操作。
二.Oracle的Cursors分類:
1.靜態游標:
分為顯式游標和隱式游標。
2.REF游標:
是一種引用類型,類似於指針。
三.Oracle的Cursors詳細內容:
1.顯式游標:
CURSOR游標名(參數) [返回值類型] IS
Select語句
生命周期:
a.打開游標(OPEN)
解析,綁定。。。不會從數據庫檢索數據
b.從游標中獲取記錄(FETCH INTO)
執行查詢,返回結果集。通常定義局域變量作為從游標獲取數據的緩沖區。
c.關閉游標(CLOSE)
完成游標處理,用戶不能從游標中獲取行。還可以重新打開。
選項:參數和返回類型
set serveroutput on
declare
cursor emp_cur ( p_deptid in number) is
select * from employees where department_id = p_deptid;
l_emp employees%rowtype;
begin
dbms_output.put_line('Getting employees from department 30');
open emp_cur(30);
loop
fetch emp_cur into l_emp;
exit when emp_cur%notfound;
dbms_output.put_line('Employee id '|| l_emp.employee_id || ' is ');
dbms_output.put_line(l_emp.first_name || ' ' || l_emp.last_name);
end loop;
close emp_cur;
dbms_output.put_line('Getting employees from department 90');
open emp_cur(90);
loop
fetch emp_cur into l_emp;
exit when emp_cur%notfound;
dbms_output.put_line('Employee id '|| l_emp.employee_id || ' is ');
dbms_output.put_line(l_emp.first_name || ' ' || l_emp.last_name);
end loop;
close emp_cur;
end;
/