日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle 游标循环 while,Oracle的游标使用方法 三种循环

發布時間:2023/12/19 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的游标使用方法 三种循环的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。