oracle游標cursor簡單使用
總共介紹兩種游標 cursor 與 sys_refcursor
1、cursor游標使用
[sql]
/*簡單cursor游標
*students表裡面有name欄位,你可以換做其他表測試
*/
--定義
declare
--定義游標並且賦值(is 不能和cursor分開使用)
cursor stus_cur is select * from students;
--定義rowtype
cur_stu students%rowtype;
/*開始執行*/
begin
--開啟游標
open stus_cur;
--loop迴圈
loop
--迴圈條件
exit when stus_cur%notfound;
--游標值賦值到rowtype
fetch stus_cur into cur_stu;
--輸出 www.2cto.com
dbms_output.put_line(cur_stu.name);
--結束迴圈
end loop;
--關閉游標
close stus_cur;
/*結束執行*/
end;
執行結果
[sql]
sql> declare
2 --定義游標並且賦值(is 不能和cursor分開使用)
3 cursor stus_cur is select * from students;
4 --定義rowtype
5 cur_stu students%rowtype;
6 /*開始執行*/
7 begin www.2cto.com
8 --開啟游標
9 open stus_cur;
10 --loop迴圈
11 loop
12 --迴圈條件
13 exit when stus_cur%notfound;
14 --游標值賦值到rowtype
15 fetch stus_cur into cur_stu;
16 --輸出
17 dbms_output.put_line(cur_stu.name);
18 --結束迴圈
19 end loop;
20 --關閉游標
21 close stus_cur;
22 /*結束執行*/
23 end;
24 /
楊過
郭靖
付政委
劉自飛
江風
任我行
任盈盈
令狐沖
韋一笑
張無忌
朵兒
謝遜
小龍女
歐陽鋒
歐陽鋒
2、sys_refcursor游標使用
www.2cto.com
[sql]
/*
*游標名:sys_refcursor
*特別注意賦值方式:for
*與上重複內容不在敘述
*/
declare
stu_cur sys_refcursor;
stuone students%rowtype;
begin
--這句賦值方式for
open stu_cur for select * from students;
--fetch賦值給rowtype
fetch stu_cur into stuone;
loop
dbms_output.put_line(stuone.name||' '||stuone.hobby);
fetch stu_cur into stuone;
exit when stu_cur%notfound;
end loop;
end;
執行結果
[sql]
sql> /*
2 *游標名:sys_refcursor
3 *特別注意賦值方式:for
4 *與上重複內容不在敘述
5 */ www.2cto.com
6 declare
7 stu_cur sys_refcursor;
8 stuone students%rowtype;
9
10 begin
11 --這句賦值方式for
12 open stu_cur for select * from students;
13 --fetch賦值給rowtype
14 fetch stu_cur into stuone;
15
16 loop
17 dbms_output.put_line(stuone.name||' '||stuone.hobby);
18 fetch stu_cur into stuone;
19 exit when stu_cur%notfound;
20 end loop;
21 end;
22 /
楊過 保護小龍女
郭靖 修煉降龍十八掌
付政委 看小人書
劉自飛 程式設計寫**
江風 程式設計寫**
任我行 修煉神功
任盈盈 遊山玩水
令狐沖 行俠仗義
韋一笑 吸拾人雪
張無忌 修行
朵兒 洗浴
謝遜 畢生研究屠龍刀
小龍女 修煉玉女心經
歐陽鋒 看小人書
www.2cto.com
補充一種迴圈條件
[sql]
declare
stu_cur sys_refcursor;
stuone students%rowtype;
begin
open stu_cur for select * from students;
fetch stu_cur into stuone;
--特別注意迴圈條件的改變
--這個條件是發現了在迴圈
--與上乙個notfound不同的
while stu_cur%found loop
dbms_output.put_line(stuone.name||' '||stuone.hobby);
fetch stu_cur into stuone;
end loop;
end;
oracle 游標cursor詳解
一 概念 游標是sql的乙個記憶體工作區,由系統或使用者以變數的形式定義。游標的作用就是用於臨時儲存從資料庫中提取的資料塊。在某些情況下,需要把資料從存放在磁碟的表中調到計算機記憶體中進行處理,最後將處理結果顯示出來或最終寫回資料庫。這樣資料處理的速度才會提高,否則頻繁的磁碟資料交換會降低效率。二 ...
oracle 游標操作,cursor
在游標中使用引數 cursor cursor name p state in state type is select statement 沒有引數的寫法是 cursor cursor name is select statement 對於括號裡面的,in 左邊是引數的別名,in 右邊是引數的型別,...
Oracle中Cursor 游標 學習
一 概念 游標是sql的乙個記憶體工作區,由系統或使用者以變數的形式定義。游標的作用就是用於臨時儲存從資料庫中提取的資料塊。在某些情況下,需要把資料從存放在磁碟的表中調到計算機記憶體中進行處理,最後將處理結果顯示出來或最終寫回資料庫。這樣資料處理的速度才會提高,否則頻繁的磁碟資料交換會降低效率。二 ...