在PL/SQL程序中,對於處理多行記錄的事務經常使用游標來實現。當執行查詢語句或者數據操縱語句是,一般可能會產生或者處理一組記錄。游標是為了處理這些記錄而分配的一段內存區。
游標分為:顯示游標和隱示游標。當記錄集中只有單行數據時,系統自動的進行定義右邊,稱為隱示游標。記錄集中含有多行數據時,需要用戶自己定義游標,稱為顯示游標。下面分別進行介紹。
顯示游標
顯示游標的處理需四個使用步驟:
1.定義游標:
就是定義一個游標名,以及與其對應的select 語句。
格式:
CURSOR cursor_name is select_statement 。
2.打開游標:
游標定義之後,要使用游標中的數據,就要打開游標。使用OPEN打開游標。游標只能打開一次。
格式:
OPEN cursor_name 。
3.提取游標數據:
檢索游標結果集中的數據,放入指定的變量之中。
格式:
FETCH cursor_name INTO variable_name 。
4.關閉游標:
游標使用完成之後,應該及時的關閉游標,將系統資源釋放。
格式:
CLOSE cursor_name 。
游標屬性
%found :布爾型,判斷最近一次執行fetch語句後,是否從緩沖區中提取到數據,如果提取到數據,返回TURE,否則返回false。
%notfound:布爾型,與%found相反,沒有提取到數據返回true,否則返回false。
%ISOPEN :布爾型,當游標打開的時候返回true。
%ROWCOUNT:數字型,放回已從游標中讀取的記錄數。
例:使用游標數據10號部門的員工工資。
declare
--定義變量
v_sal emp.sal%type ;
--定義游標
cursor emp_sal_cursor is select sal from emp where deptno = 10 ;
begin
--打開游標
open emp_sal_cursor ;
--提起游標信息
fetch emp_sal_cursor into v_sal ;
while emp_sal_cursor%found loop
dbms_output.put_line(v_sal);
fetch emp_sal_cursor into v_sal ;
end loop ;
--關閉游標
close emp_sal_cursor;
end ;
例:使用記錄類型和游標檢索數據