Oracle的游標使用方法 三種迴圈

2021-07-29 21:25:11 字數 1537 閱讀 6018

例: 游標 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迴圈是用來迴圈游標的最好方法。高效,簡潔,安全。

ajax 的三種使用方法

第一種 也是最古老的一種方法之一 from 表單直接提交資料到php檔案裡 action為路徑 form method post action index.php input name username placeholder 使用者名稱 type text input name password ...

Oracle游標的三種用法

迴圈游標 for record index in cursor name loop executable statements end loop 普通游標 cursor cursor name parameter parameter return return type is select stat...

Oracle游標使用方法( 游標裡使用變數繫結)

游標 cursor 也叫游標,在關聯式資料庫中經常使用,在pl sql程式中可以用cursor與select一起對錶或者檢視中的資料進行查詢並逐行讀取。oracle游標分為顯示游標和隱式游標。顯示游標 explicit cursor 在pl sql程式中定義的 用於查詢的游標稱作顯示游標。隱式游標 ...