在oracle中,存儲過程是為了完成特定功能的SQL語句集,編譯后存儲在數據庫中,用戶通過指定存儲過程名字并給出參數來執行它;語法格式為“create or replace procedure 存儲過程名”。
本教程操作環境:windows7系統、oracle 11.2.0.1.0版,DELL G3電腦。
Oracle存儲過程包含三部分:過程聲明,執行過程部分,存儲過程異常(可寫可不寫,要增強腳本的容錯性和調試的方便性那就寫上異常處理)
存儲過程它的使用主要是完成一項復雜的功能,如果直接使用sql語句則每次都需要進行編譯,而存儲過程只需要編譯一次,以后直接調用即可,它的語法為
create?or?replace?procedure?procedure_name as begin ???extention; end; /
行1:
CREATE?OR?REPLACE?PROCEDURE?是一個SQL語句通知Oracle數據庫去創建一個叫做skeleton存儲過程,?如果存在就覆蓋它;
行2:
IS關鍵詞表明后面將跟隨一個PL/SQL體。
行3:
BEGIN關鍵詞表明PL/SQL體的開始。
行4:
NULL?PL/SQL語句表明什么事都不做,這句不能刪去,因為PL/SQL體中至少需要有一句;
行5:
END關鍵詞表明PL/SQL體的結束
存儲過程創建語法:
?create?or?replace?procedure?存儲過程名(param1?in?type,param2?out?type)? as? 變量1?類型(值范圍);?--vs_msg???VARCHAR2(4000);? 變量2?類型(值范圍); Begin Select?count(*)?into?變量1?from?表A?where列名=param1; ? ????If?(判斷條件)?then ???????Select?列名?into?變量2?from?表A?where列名=param1; ???????Dbms_output。Put_line(‘打印信息’); ????Elsif?(判斷條件)?then ???????Dbms_output。Put_line(‘打印信息’); ????Else ???????Raise?異常名(NO_DATA_FOUND); ????End?if; Exception ????When?others?then ???????Rollback; End;
注意事項:
1,?存儲過程參數不帶取值范圍,in表示傳入,out表示輸出
類型可以使用任意Oracle中的合法類型。
2,??變量帶取值范圍,后面接分號
3,??在判斷語句前最好先用count(*)函數判斷是否存在該條操作記錄
4,??用select?。。。into。。。給變量賦值
5,??在代碼中拋異常用?raise+異常名
推薦(免費):oracle