標籤:
簡述
儲存在資料庫中命名的可傳若干參數且通常沒有傳回值的PL/SQL程式塊.不能直接被sql調用執行,而是通過execute命令或PL/SQL程式塊中調用執行.
文法格式
Create [or replace] procedure 預存程序名稱 [(參數)] is|as
Begin
主體代碼
[exception
異常處理語句]
End [名稱];
說明: 1.or replace中的or不能省略
2.Create or replace沒有就建立,有就覆蓋原有的
3.建立之後,主體語句只是被編譯並沒有被執行
調用執行
1.execute命令
Execute 預存程序名稱;
2.用PL/SQL程式塊
Begin
...
預存程序名稱;
End;
參數模式
1.in模式(輸入型別參數,參數由調用者傳入,且只能被預存程序讀取)
參數名 in 資料類型 [default 預設參數值]
使用default說明:
a.使用default可以給參數設定預設值.
b.當使用預設值時,想要給一些帶預設值的傳值,另一些不傳值的時候,此時用按名稱 傳值的方式比較方便
傳入參數的三種方式
A.指定名稱傳遞 (參數名=>傳入的參數值...,參數名=>傳入的參數值)
B.按位置傳遞 (參數值...,參數值)
C.混合方式傳遞 將上面兩種方式結合起來,不過要先按位置傳遞,後面按名稱傳遞
(參數值...,參數值,參數名=>傳入的參數值...,參數名=>傳入的參數值)
2.Out模式(輸出型別參數,參數值可以傳遞到當前預存程序以外的環境中)
變數名 out 資料類型
調用out模式預存程序:
A.在PL/SQL塊中調用
在declare部分聲明變數,將參數傳入之後就可以直接使用
B.用execute命令調用
使用variable定義變數(variable 變數名 資料類型)
Execute 預存程序名(參數)(Execute 預存程序名(15,:變數名);
說明:15是in的值,直接傳值即可,後面是out類型的值,要使用定義的變數接收, 且前面要加上:
然後使用print或select語句輸出值
Print 變數名 變數名;
Select :變數名,:變數名 from dual;
3.In out模式(將in模式和out模式結合起來)
變數名 in out 資料類型;
oracle預存程序