Oracle資料庫儲存過程 使用游標(2)

2021-09-01 01:44:37 字數 1131 閱讀 1801

第一種使用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...