第一種使用loop 迴圈
loop
fetch c_postype into v_postype,v_description ;
exit when c_postype%notfound;
……end loop
備註:exit when語句一定要緊跟在fetch之後。必避免多餘的資料處理。 而處理邏輯需要跟在exit when之後。這一點需要多加小心。最後迴圈結束後要記得關閉游標。
第二種使用while迴圈
fetch c_postype into v_postype,v_description;
while c_postype%found loop
……fetch c_postype into v_postype,v_description ;
end loop;
備註:我們知道了乙個游標開啟後,必須執行一次fetch語句,游標的屬性才會起作用。所以使用while 迴圈時,就需要在迴圈之前進行一次fetch動作。 而且資料處理動作必須放在迴圈體內的fetch方法之前。迴圈體內的fetch方法要放在最後。否則就會多處理一次。這一點也要非常的小心。[color=red] 總之,使用while來迴圈處理游標是最複雜的方法。 [/color]
第三種 for迴圈
for v_pos in c_postype loop
v_postype := v_pos.pos_type;
v_description := v_pos.description;
…end loop;
備註:可見for迴圈是比較簡單實用的方法。
首先,它會自動open和close游標。解決了你忘記開啟或關閉游標的煩惱。
其它,自動定義了乙個記錄型別及宣告該型別的變數,並自動fetch資料到這個變數中。
[color=red]由此可見,for迴圈是用來迴圈游標的最好方法。高效,簡潔,安全。 [/color]
注意:我們需要注意v_pos 這個變數無需要在迴圈外進行宣告,無需要為其指定資料型別。
它應該是乙個記錄型別,具體的結構是由游標決定的。
這個變數的作用域僅僅是在迴圈體內。
把v_pos看作乙個記錄變數就可以了,如果要獲得某乙個值就像呼叫記錄一樣就可以了。
如v_pos.pos_type
Oracle資料庫儲存過程
建立語句 create or replace procedure 儲存過程名 儲存過程名定義 包括儲存過程名和引數列表。引數名和引數型別。引數名不能重複,引數傳遞方式 in,out,in out in 表示輸入引數,按值傳遞方式。out 表示輸出引數,可以理解為按引用傳遞方式。可以作為儲存過程的輸出...
oracle資料庫 儲存過程
儲存過程 stored procedure 是一組為了完成特定功能的sql 語句集,經編譯後儲存在資料庫中。使用者通過指定儲存過程的名字並給出引數 如果該儲存過程帶有引數 來執行它。儲存過程是資料庫中的乙個重要物件,任何乙個設計良好的資料庫應用程式都應該用到儲存過程。儲存過程是由流控制和sql 語句...
匯出oracle資料庫儲存過程
專案結束了,想把自己寫的儲存過程匯出儲存乙份就寫了這麼乙個簡單的指令碼,拿出來給大家共享一下。其實很簡單,主要用到user procedures user source兩個檢視,大家一看就知道了。好像網上搜到的一些都不夠全面,而且零零散散,如果覺得好的話就支援一下吧,usr bin ksh prof...