Oracle游标使用
生活随笔
收集整理的這篇文章主要介紹了
Oracle游标使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一,什么是游標
????遍歷查詢結果集的一種機制。
二,為什么避免使用游標
? ? 盡量避免使用游標, 因為游標的效率較差;
????如果使用了游標,就要盡量避免在游標循環中再進行表連接的操作。
三,使用游標的步驟(靜態游標)
????1,聲明一些變量,用來保存游標遍歷過程的臨時數據
????2,聲明游標,并且指定查詢
????3,打開游標
????4,從游標中獲取一行或多行記錄
????5,關閉游標
四,游標的屬性
? ? 1,%isopen:是否打開游標
? ? 2,%rowcount:游標的行數
? ? 3,%found:是否還有數據
? ? 4,%notfound:是否沒有數據
五,游標的分類(下面的分類不是并列關系)
? ? 1,靜態游標:使用游標前就已經定義好,并且不能更改
? ? 2,動態游標:游標在聲明時沒有定義好,在打開時可以做更改
? ? 3,顯示游標:使用游標前要聲明、打開游標,使用完成需要關閉
? ? 4,隱示游標:事先沒有聲明打開游標,直接使用,也不需要關閉
? ? 5,強類型游標:聲明游標時帶return關鍵字,游標只能與特定的查詢匹配
? ? 6,弱類型游標:聲明游標時不帶return關鍵字,游標可以與任意查詢匹配
六,游標的具體使用栗子:
? ? 1,先創建表結構和插入數據
create table students(id number,name varchar2(10),age number ); insert into students values(1,'李白',18); insert into students values(2,'妲己',16); insert into students values(3,'趙信',20); commit;? ? 2,隱式游標
declare beginfor student in(select * from students) loopdbms_output.put_line('編號:'||student.id||',姓名:'||student.name||',年齡'||student.age);end loop; end;? ? 3,顯式游標
declarecursor mycur is select * from students;student students%rowtype; beginopen mycur;loopfetch mycur into student;exit when mycur%notfound;dbms_output.put_line('編號:'||student.id||',姓名:'||student.name||',年齡'||student.age);end loop;close mycur; end;? ? 4,動態游標之強類型游標
--打印年齡小于18的學生 create or replace procedure printStudents(in_age in varchar2) as--自定義類型type student_type is record(id number,name varchar2(10));type students_type is ref cursor return student_type;--定義游標類型students students_type;--聲明游標變量student student_type;--聲明變量 beginopen students for select id,name from students where age<in_age;--定義游標fetch students into student;--游標指針指向下一行while students%found loop--遍歷游標dbms_output.put_line('編號:'||student.id||',姓名:'||student.name);fetch students into student;--游標指針指向下一行end loop;close students;--關閉游標 end;declarep_v number; beginp_v:=&請輸入年齡;printstudents(p_v); end;?
總結
以上是生活随笔為你收集整理的Oracle游标使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win7怎么系统重置密码怎么设置密码 w
- 下一篇: 5条件筛选功能_一分钟,彻底学会Exce