posts - 60,comments - 71,trackbacks - 0
          本文來自:http://www.aygfsteel.com/improviser/archive/2007/10/05/150456.html

          今天寫有關Oracle中函數與觸發(fā)器的內容,在數據庫中定義并使用存儲過程、函數、觸發(fā)器,可以提高用戶訪問數據庫的效率。

              數據庫中函數包含四個部分:聲明、返回值、函數體和異常處理
           1 create or replace function getname(sno varchar2)
           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 

             觸發(fā)器是一種特殊的存儲過程,類似于其它編程語言中的事件函數,允許為 INSERT、UPDATE、DELETE 創(chuàng)建觸發(fā)器,當在表(視圖)中插入、更新、刪除記錄(前、后)時,觸發(fā)一個或一系列 T-SQL 語句。

              創(chuàng)建在
          STUDENT表上的插入觸發(fā)器,當在STUDENT表中插入數據時候觸發(fā)器將被觸發(fā),執(zhí)行體將被執(zhí)行
             插入觸發(fā)器
           1
           create or replace trigger tg_insert
           2  before insert on student                --可設置在插入前或插入后
           3  begin
           4        ...
           5  end;
           

             更新觸發(fā)器
           8  create or replace trigger tg_update
           9  after update on student
          10  for each row
          12  begin
          13      ...
          14  END;
          15 

          觸發(fā)器兩個特殊行級變量: :New新值  :Old舊值 分別代表更新值,被更新的值

           1 create or replace trigger tg_insert
           2 after update on student
           3 for each row
           4 when (:old.sex=’j’)        --當old.sex為J時候才執(zhí)行觸發(fā)器內容
           5 begin
           7    DBMS_OUTPUT.PUT_LINE(:new.stuname||'  '||:old.stuname);
           8    DBMS_OUTPUT.PUT_LINE(:new.sex||'  '||:old.sex);
           9 end;
          10 

          判斷復合型觸發(fā)器

           1 create or replace trigger trgstudeng
           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 

             觸發(fā)器功能強大,可以實現許多復雜的功能,但如果濫用會造成數據庫及應用程序的維護困難。
          posted on 2008-06-18 17:23 henry1451 閱讀(285) 評論(0)  編輯  收藏 所屬分類: Oracle技術
          主站蜘蛛池模板: 綦江县| 永康市| 榆林市| 轮台县| 札达县| 海口市| 利津县| 岚皋县| 青铜峡市| 肥西县| 张家界市| 高台县| 屏东市| 克什克腾旗| 墨竹工卡县| 阜阳市| 建昌县| 肇东市| 绥化市| 文安县| 新绛县| 武威市| 资源县| 鲁山县| 郎溪县| 疏附县| 仁布县| 富阳市| 岫岩| 乐安县| 教育| 青州市| 岑巩县| 泰来县| 富民县| 呼图壁县| 英德市| 陕西省| 久治县| 通化县| 晋江市|