1.存儲過程
文法:
文法解析:
IN:輸入參數。
OUT:輸出參數;
IN OUT:就可以輸入也可輸出的參數;
datatype:參數的資料類型。此處不能帶精度。
:=|DEFAULT:用于設定參數的預設值。
例1:

過程調用
(3) 删除過程
2.函數
過程用來完畢一項任務,可能不傳回值,也可能傳回多個值,過程的調用是一條PL/SQL語句;函數包括RETURN子句,用來進行資料操作,并傳回一個單獨的函數值,函數的調用僅僅能在一個表達式中。
例:
調用函數:
3.程式包中的遊标
遊标的定義分為遊标規範和遊标主體兩部分
在包規範中聲明遊标規範時必須使用 RETURN 子句指定遊标的傳回類型
RETURN子句指定的資料類型能夠是:
用 %ROWTYPE 屬性引用表定義的記錄類型
程式猿定義的記錄類型
例1:
調用
例2:
實作增删查改:
4.觸發器
觸發器分為 DML 觸發器、 INSTEAD OF 觸發器、DDL 觸發器和系統觸發器三種類型
DML 觸發器包含行級觸發器、語句級觸發器
(2)觸發器的功能:
自己主動生成資料
自己定義複雜的安全權限
針對周六日不能進行改動資料庫:
測試:
提供審計和日志記錄
啟用複雜的業務邏輯
(3)行級觸發器:
用觸發器實作自增的主鍵:
1.
2.效率高
3.效率低
(4)文法解析:
INSTEAD OF:僅用于替代觸發器,即event_target必須為視圖,并且必須帶FOR EACH ROW子句
trigger_event:觸發的事件。能夠是DML事件(INSERT、UPDATE、DELETE、INSERT OR UPDATE、UPDATE OF column_name),系統事件(STARTUP、SHUTDOWN等)。
event_target:即指trigger_event事件是發生在哪個對象上的。如DML事件,那麼event_target應該是表名或視圖名,假設是系統事件,那麼event_target就應該是DATABASE或SCHEMA
FOR EACH ROW:假設帶此子句。即表示該觸發器是行級觸發器。假設省略,則是語句級觸發器。
WHEN condition :用于限制行級觸發器,僅僅有滿足condition條件,才會觸發觸發器。
觸發器有ENABLED和DISABLED兩種狀态。
改動某個觸發器的狀态能夠運作以下的SQL:
使某個表上的全部觸發器有效或無效: