Oracle之函數與觸發器
??? 數據庫中函數包含四個部分:聲明、返回值、函數體和異常處理。
?2??return?varchar?is
?3?????????name?varchar(12 );
?4??begin
?5?????????select?ename?into?name?from?emp?where?empno= sno;
?6?????????return ?name;
?7? ?exception
?8??????? ...
12??end ;
13?
??? 觸發器是一種特殊的存儲過程,類似于其它編程語言中的事件函數,允許為 INSERT、UPDATE、DELETE 創建觸發器,當在表(視圖)中插入、更新、刪除記錄(前、后)時,觸發一個或一系列 T-SQL 語句。
? ? 創建在 STUDENT 表上的插入觸發器,當在 STUDENT 表中插入數據時候觸發器將被觸發,執行體將被執行
?1?create?or?replace?trigger ?tg_insert
?2??before?insert?on?student??????????????? -- 可設置在插入前或插入后
?3??begin
?4??????? ...
?5??end ;
?
?? 更新觸發器
?8? create?or?replace?trigger ?tg_update
?9??after?update?on ?student
10??for?each?row
12??begin
13????? ...
14??END ;
15?
觸發器兩個特殊行級變量: :New 新值 ? 和 ? :Old 舊值 ? 分別代表更新值,被更新的值
?2?after?update?on ?student
?3?for ?each?row
?4?when?(:old.sex=’j’)??????? -- 當old.sex為J時候才執行觸發器內容
?5?begin
?7????DBMS_OUTPUT.PUT_LINE(:new.stuname||'??'|| :old.stuname);
?8????DBMS_OUTPUT.PUT_LINE(:new.sex||'??'|| :old.sex);
?9?end ;
10?
判斷復合型觸發器
?2?before?insert?or?update?or?delete?on ?student
?3?for ?each?row
?4?begin
?5?????if??inserting?then
?6???? ...
?8?????end?if ;
?9?????if?deleting?then
10???? ...
12?????end?if ;
13? exception
14? ?? ...
16?END ;
17?
? ? 觸發器功能強大,可以實現許多復雜的功能,但如果濫用會造成數據庫及應用程序的維護困難。
? (轉載請注明出處)?
?
鳳凰涅槃/浴火重生/馬不停蹄/只爭朝夕
???? 隱姓埋名/低調華麗/簡單生活/完美人生
posted on 2007-10-05 00:04 poetguo 閱讀(3323) 評論(5) 編輯 收藏 所屬分類: Oracle