<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    俊星的BLOG

    ORACLE Autonomous Transactions(自治事務)試用

    ORACLE自治事務是一個不錯的功能,關鍵字是AUTONOMOUS_TRANSACTION,下面是我試用:
    1、測試:
    創建一個測試表:
    CREATE TABLE TBL_TEST(
      TEST_ID 
    NUMBER NOT NULL,
      TEST_DESC 
    VARCHAR2(100NOT NULL
    );

    新增兩條記錄(注意沒有進行提交):
    INSERT INTO TBL_TEST VALUES(1,'DESC 1');
    INSERT INTO TBL_TEST VALUES(2,'DESC 2');

    通過自治事務添加6兩條記錄:
    DECLARE PRAGMA AUTONOMOUS_TRANSACTION;
    BEGIN
     
    FOR i IN 3..8 LOOP
      
    INSERT INTO TBL_TEST VALUES(i,'DESC '||i);
     
    END LOOP;
     
    COMMIT;
    END;
    /

    查看執行結果如下:
    SQL> SELECT * FROM TBL_TEST;
     
       TEST_ID TEST_DESC
    ---------- --------------------------------------------------------------------------------
             
    1 DESC 1
             
    2 DESC 2
             
    3 DESC 3
             
    4 DESC 4
             
    5 DESC 5
             
    6 DESC 6
             
    7 DESC 7
             
    8 DESC 8
     
    8 rows selected

    回滾后再次查看結果(通過結果可以看到采用自治事務的新增沒有被回滾掉):
    SQL> ROLLBACK;
     
    Rollback complete
    SQL> SELECT * FROM TBL_TEST
    ;
     
       TEST_ID TEST_DESC
    ---------- --------------------------------------------------------------------------------
             
    3 DESC 3
             
    4 DESC 4
             
    5 DESC 5
             
    6 DESC 6
             
    7 DESC 7
             
    8 DESC 8
     
    6 rows selected

    2、應用自治事務實現日志記錄:
    創建一個日志表:
    CREATE TABLE TBL_LOG(
      LOG_ID 
    NUMBER(10PRIMARY KEY,
      LOG_MSG 
    VARCHAR2(4000NOT NULL,
      LOG_TIME DATE 
    NOT NULL
    );

    創建一個序列:
    CREATE SEQUENCE SEQ_TBL_LOG;

    創建一個記錄日志的存儲過程:
    CREATE OR REPLACE PROCEDURE DO_LOG(P_MSG IN VARCHAR2AS 
     PRAGMA AUTONOMOUS_TRANSACTION;
    BEGIN
      
    INSERT INTO TBL_LOG VALUES(SEQ_TBL_LOG.NEXTVAL,P_MSG,SYSDATE);
      
    COMMIT;
    END;
    /

    測試上面的存儲過程:
    BEGIN
      
    INSERT INTO TBL_TEST VALUES (100,'DESC 100');
      
    -- test the do_log
      INSERT INTO TBL_TEST VALUES (101,NULL);
    EXCEPTION
      
    WHEN OTHERS THEN
        DO_LOG(P_MSG 
    =>SQLERRM);
        
    ROLLBACK;
    END;
    /

    查看運行結果:
    SQL> SELECT * FROM TBL_TEST WHERE TEST_ID>=100;
     
       TEST_ID TEST_DESC
    ---------- --------------------------------------------------------------------------------
    SQL> SELECT * FROM TBL_LOG
    ;
     
         LOG_ID LOG_MSG                                                                          LOG_TIME
    ----------- -------------------------------------------------------------------------------- -----------
              
    1 ORA-01400: 無法將 NULL 插入 ("FWMS4ZH_TEST"."TBL_TEST"."TEST_DESC")              2009-5-15 2

    posted on 2009-05-15 20:19 俊星 閱讀(245) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 最好免费观看韩国+日本| 免费jjzz在在线播放国产| 亚洲日韩国产二区无码| 四虎永久免费地址在线网站| j8又粗又长又硬又爽免费视频| 亚洲AV无码成人精品区在线观看 | 国产极品粉嫩泬免费观看| 高潮毛片无遮挡高清免费| 亚洲另类激情综合偷自拍| 国产精品无码一区二区三区免费| 两个人日本WWW免费版| 中文字幕亚洲精品无码| 国产亚洲精品不卡在线| 免费无码AV片在线观看软件| 色老头综合免费视频| 亚洲国产成人精品无码区在线秒播| 亚洲国产精品国产自在在线 | 免费在线观影网站| 亚洲综合av一区二区三区| 亚洲欧洲日产国码av系列天堂| 在线免费观看一级片| 日韩精品无码专区免费播放| 视频一区二区三区免费观看| 亚洲国产精品日韩在线观看| 奇米影视亚洲春色| 日韩毛片免费在线观看| 免费视频爱爱太爽了| a级毛片免费在线观看| 黄色免费在线网址| 亚洲欧洲无码一区二区三区| 亚洲色图国产精品| 亚洲情侣偷拍精品| 国产成人综合久久精品免费| 美女被免费喷白浆视频| 91成人在线免费视频| 国产午夜无码片免费| 理论片在线观看免费| 亚洲AV无码一区二区大桥未久| 亚洲熟妇色自偷自拍另类| 亚洲AV无码码潮喷在线观看| 亚洲中文字幕无码爆乳av中文|