create
orreplace
procedure prc_lj is
cursor c_emp is
--聲明顯式游標
select empno,
ename
from emp;
c_row c_emp%rowtype; --定義游標變數,該變數的型別為基於游標c_emp的記錄
begin
--for 迴圈
for c_row in c_emp loop
dbms_output.put_line(c_row.empno || '--' || c_row.ename);
end loop;
--fetch 迴圈
open c_emp;--必須要明確的開啟和關閉游標
loop
fetch c_emp
into c_row;
exit when c_emp%notfound;
dbms_output.put_line(c_row.empno || '++' || c_row.ename);
end loop;
close c_emp;
--while 迴圈
open c_emp;--必須要明確的開啟和關閉游標
fetch c_emp into c_row;
while c_emp%found loop
dbms_output.put_line(c_row.empno || '**' || c_row.ename);
fetch c_emp into c_row;
end loop;
close c_emp;
end prc_lj;
第一種使用for 迴圈
for迴圈是比較簡單實用的方法。
首先,它會自動open和close游標。解決了你忘記開啟或關閉游標的煩惱。
其次,自動宣告乙個記錄型別及定義該型別的變數,並自動fetch資料到這個變數。
注意c_row 這個變數無需要在迴圈外進行宣告,無需為其指定資料型別。它是乙個記錄型別,具體的結構是由游標決定的。
這個變數的作用域僅僅是在迴圈體內。
最後,與該游標關聯的所有記錄都已經被取回後,迴圈無條件結束,不必判定游標的%notfound屬性為true。
for迴圈是用來迴圈游標的最好方法。高效,簡潔,安全。
第二種使用fetch迴圈
注意,exit when語句一定要緊跟在fetch之後,避免多餘的資料處理。
處理邏輯需要跟在exit when之後。
迴圈結束後要記得關閉游標。
第三種使用while迴圈
使用while 迴圈時,需要在迴圈之前進行一次fetch動作,游標的屬性才會起作用。
而且資料處理動作必須放在迴圈體內的fetch方法之前,迴圈體內的fetch方法要放在最後,否則就會多處理一次。
List遍歷 三種方式
對list的遍歷有三種方式 listlist new arraylist list.add new a list.add new a 第一種 for iteratorit list.iterator it.hasnext 這種方式在迴圈 執行過程中會進行資料鎖定,效能稍差,同時,如果你想在尋歡過程中...
遍歷List的三種方式
對list的遍歷有三種方式 listlist new arraylist list.add new a list.add new a 第一種 for iteratorit list.iterator it.hasnext 這種方式在迴圈 執行 過程中會進行資料鎖定,效能稍差,同時,如果你想在尋歡過程...
Java List遍歷的三種方式
mapmap newhashmap map.put key1 value1 map.put key2 value2 map.put key3 value3 第一種 普遍使用,二次取值 system.out.println 通過map.keyset遍歷key和value for string key ...