oracle游標cursor簡單使用

2021-12-30 02:26:57 字數 3780 閱讀 9174

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的乙個記憶體工作區,由系統或使用者以變數的形式定義。游標的作用就是用於臨時儲存從資料庫中提取的資料塊。在某些情況下,需要把資料從存放在磁碟的表中調到計算機記憶體中進行處理,最後將處理結果顯示出來或最終寫回資料庫。這樣資料處理的速度才會提高,否則頻繁的磁碟資料交換會降低效率。二 ...