Oracle遊標簡介與使用
阿新 • • 發佈:2020-07-28
簡介
遊標是一個指向查詢結果集的指標,PL/SQL有兩種遊標,分別是顯式遊標和隱式遊標。
隱式遊標
1.宣告一個遊標
在使用顯式遊標之前,你必須宣告它。
CURSOR cursor_name IS query
OPEN cursor_name
在這句話中,cursor_name
是在宣告部分所宣告遊標的名字。
當你開啟遊標,Oracle會解析查詢,繫結變數並且執行所關聯的SQL語句。Oracle也決定了執行計劃,將變數和遊標引數與SQL語句中的佔位符相關聯,確定結果集,並將遊標設定到結果集中的第一行。
3.從遊標中獲取資料
FETCH cursor_name INTO variable_list
CLOSE cursor_name
關閉遊標會使Oracle在適當的時機釋放所佔用的記憶體。
如果你在匿名塊、儲存過程或者函式中宣告遊標,在這些物件執行結束時遊標也會自動的關閉。
5.顯示遊標的屬性
一個遊標有四個屬性,你可以使用以下語法來引用他們
cursor_name%attrribute
這個屬性有四個值
-
NULL
:在第一次獲取資料之前 -
TRUE
:一條記錄成功的被獲取到 -
FALSE
:沒有記錄返回 -
INVALID_CURSOR
:遊標沒有開啟
%NOTFOUND
這個屬性也有四個值
-
NULL
-
FALSE
:一條記錄成功的被獲取到 -
TRUE
:沒有記錄返回 -
INVALID_CURSOR
:遊標沒有開啟
%ROWCOUNT
declare --型別定義 cursor c_job is select empno,ename,job,sal from emp where job='MANAGER'; --定義一個遊標變數 c_row c_job%rowtype; begin open c_job; loop --提取一行資料到c_row fetch c_job into c_row; --判讀是否提取到值,沒取到值就退出 --取到值c_job%notfound 是false --取不到值c_job%notfound 是true exit when c_job%notfound; dbms_output.put_line(c_row.empno||'-'||c_row.ename||'-'||c_row.job||'-'||c_row.sal); end loop; --關閉遊標 close c_job; end;