1. 過程
過程用於執行特定的操作,當建立過程時,既可以指定輸入參數(in),也可以指定輸出參數(out), 通過在過程中使用輸入參數,可以將數據傳遞到執行部分;通過使用輸出參數,可以將執行部分的數據傳遞到應用環境。在sqlplus中可以使用create procedure命令來建立過程。
實例如下:
(1). 請考慮編寫一個過程,可以輸入僱員名,新工資,可修改僱員的工資
(2). 如何調用過程有兩種方法; exec call
(3). 如何在java程序中調用一個存儲過程
創建過程,代碼如下:
java程序中調用一個存儲過程
2. 函數
函數用於返回特定的數據,當建立函數時,在函數頭部必須包含return子句。而在函數體內必須包含return語句返回的數據。我們可以使用create function來建立函數,實際案例:
如果函數創建過程有編譯錯誤,可以使用show error;命令顯示錯誤
在sqlplus中調用函數
var income number
call annual_incomec('scott') into: income;
print income
var income number
call annual_incomec('scott') into: income;
print income
同樣我們可以在java程序中調用該函數
select annual_income('SCOTT') from dual;
這樣可以通過rs.getInt(l)得到返回的結果。
3. 包
包用於在邏輯上組合過程和函數,它由包規範和包體兩部分組成。
(1). 我們可以使用create package命令來創建包。
包的規範只包含了過程和函數的說明,但是沒有過程和函數的實現代碼。包體用於實現包規範中的過程和函數。
(2). 建立包體可以使用create package body命令
(3). 如何調用包的過程或是函數
當調用包的過程或是函數時,在過程和函數前需要帶有包名,如果要訪問其它方案的包,還需要在包名前加方案名。
call sp_package.update_sal('SCOTT', 1500);
4. 觸發器
觸發器是指隱含的執行的存儲過程。當定義觸發器時,必須要指定觸發的事件和觸發的操作,常用的觸發事件包括insert,update,delete語句,而觸發操作實際就是一個pl/sql塊。可以使用create trigger來建立觸發器。
我們會在後面詳細爲大家介紹觸發器的使用,因爲觸發器是非常有用的,可維護數據庫的安全和一致性。