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