簡介
游標是一個指向查詢結果集的指針,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;
參考:https://www.oracletutorial.com/plsql-tutorial/plsql-cursor/