oracle 游标循环 while,Oracle的游标使用方法 三种循环
例: 游標 LOOP循環游標
SET SERVERIUTPUT ON
DECLARE
R_emp EMP%ROWTYPE;
CURSOR c_emp IS SELECT * FROM emp;
BEGIN
OPEN c_emp;
LOOP
FETCH c_emp INTO r_emp;
EXIT WHEN c_emp%NOTFOUND;
DBMS_OUT.PUT.PUT_LINE('Salary of Employee'||r_emp.ename||'is'|| r_emp.salary);
END LOOP;
CLOSE c_emp;
END;
帶參數的游標
DECLARE
cursor c_columns(t_table_name varchar) is select column_name from user_tab_columns where table_name = t_table_name;
BEGIN
open c_columns('TABLE_NAME');
fetch c_columns into v_column;
if c_columns%found then
dbms_output.put_line('列名為:'||v_column);
end if;
close c_columns;
END;
第二種:使用while循環
open c1;
fetch c1 into v_name,v_job;
while c1%found loop
……
fetch c1 into v_name,v_job;
end loop;
close c1;
注意 這里用到了兩個fetch語句!
第一個fetch語句是把游標的第一行記錄賦值給相關變量,第二個fetch語句是讓游標指向下一條記錄。
如果沒有第二個語句的話,即為死循環,不停地執行loop內的代碼。
總之,使用while來循環處理游標是最復雜的方法。
第三種: for循環
for v_pos in c1 loop
v_name:= v_pos.ename;
v_job:= v_pos.ejob;
…
end loop;
可見for循環是比較簡單實用的方法。
首先,它會自動open和close游標。解決了你忘記打開或關閉游標的煩惱。
其它,自動定義了一個記錄類型及聲明該類型的變量,并自動fetch數據到這個變量中。
我們需要注意v_pos 這個變量無需要在循環外進行聲明,無需要為其指定數據類型。
它應該是一個記錄類型,具體的結構是由游標決定的。
這個變量的作用域僅僅是在循環體內。
把v_pos看作一個記錄變量就可以了,如果要獲得某一個值就像調用記錄一樣就可以了。
如v_pos.pos_type
由此可見,for循環是用來循環游標的最好方法。高效,簡潔,安全。
總結
如果覺得編程之家網站內容還不錯,歡迎將編程之家網站推薦給程序員好友。
本圖文內容來源于網友網絡收集整理提供,作為學習參考使用,版權屬于原作者。
總結
以上是生活随笔為你收集整理的oracle 游标循环 while,Oracle的游标使用方法 三种循环的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 600008首创股份什么时候配股
- 下一篇: oracle简体版,oracle|Nav