Oracle中的游標操作

2021-08-29 15:10:48 字數 2475 閱讀 9254

游標是oracle系統在記憶體中開闢的乙個工作區,在其中存放select語句返回的查詢結果

<1>游標操作的過程

(1) 定義游標

(2)開啟游標

(3)游標的操作(移動,讀取資料)

(4)關閉游標

注釋:-- 游標的定義格式:cursor cusor_name is select語句

-- 游標的開啟: open 游標名

-- 游標讀取資料: fetch 游標名 into 變數1,變數2……(這裡可以是普通變數,也可以是記錄型別的變數)

-- 關閉游標: close 游標名

--游標只能向後移動,不能返回。

<2>游標操作舉例

declare

row person%rowtype;--定義了乙個記錄型別的變數

increment number(4);--定義了乙個普通變數

cursor cursor_person is select * from person; -定義游標變數

i number(2);--定義普通變數

begin

select count(*) into i from person;--i變數儲存person表中的記錄總數

open cursor_person; ----開啟游標

loop

fetch cursor_person into row; ----取出游標中的資料放到記錄型別的變數中

if row.id=2 then

increment:=1;

elseif row.id=3 then

increment:=2;

end if;

update person set age=age+ increment where name=row.name;

i:=i-1;

exit when i=0;

end loop;

close cursor_person; ----關閉游標

end;

/註解:將表中號碼是2的人年齡加1,號碼是3的人年齡加2.

<3>游標的屬性:

----%isopen:該屬性判斷游標是否已經開啟,若已經開啟,則返回值值true,否則返回false

------%found若最近一次fetch操作結果存在,那麼就返回true

------%notfound同%found相反

------%rowcount返回游標操作過的記錄總數

上面的舉例可以改寫為:

declare

row person%rowtype;--定義了乙個記錄型別的變數

increment number(4);--定義了乙個普通變數

cursor cursor_person is select * from person; -定義游標變數

begin

open cursor_person; ----開啟游標

loop

fetch cursor_person into row; ----取出游標中的資料放到記錄型別的變數中

exit when cursor_person%notfound;

if row.id=2 then

increment:=1;

elseif row.id=3 then

increment:=2;

end if;

update person set age=age+ increment where name=row.name;

end loop;

close cursor_person; ----關閉游標

end;

/<4>for迴圈在游標操作中的應用

基本格式:

for 變數名(此變數名無需定義) in 游標名 loop

迴圈體部分

end loop;

說明:for迴圈會自動的開啟和關閉游標

下面是上例子在for迴圈中的使用情況:

declare

increment number(4);--定義了乙個普通變數

cursor cursor_person is select * from person; -定義游標變數

begin

for row in cursor_person loop

if row.id=2 then

increment:=1;

elseif row.id=3 then

increment:=2;

end if;

update person set age=age+ increment where name=row.name;

end loop; ----關閉游標

end;

/<5>帶引數的游標操作

定義的格式:

cursor cursor_name(variable1 type, variable2 type …………….) is selectstatement

Oracle 游標操作

sql語言分為六種,其中ccl cursor control language游標控制語言 簡單定義 游標是指向結果集的指標,類似迭代器iterator 一開始指向結果集的第一條記錄之前的記錄,每fetch一次往下移動一條記錄,返回指標指向的當前記錄。游標的操作 1 宣告游標 cursor c is...

Oracle中的游標

cursor found最近一次讀取是否成功 notfound isopen游標開啟時返回true rowcount返回已從游標讀取的記錄數 輸出年齡大於等於18的使用者的id跟name declare v id t.id type v name t.name type cursor c user ...

Oracle中的游標

oracle 中的游標 游標 cursor 在pl sql 中可以增強 sql語句的功能,游標是用來查詢資料 獲取結果集中記錄的指標。它可以讓開發者在結果集中訪問結果集中的一行。游標以程式設計的方式訪問資料,從而完成在結果集的每個記錄上的操作。也就是說,游標就是結果集中的記錄指標,該指標指向查詢結果...