<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)  編輯  收藏


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


    網站導航:
     
    主站蜘蛛池模板: 亚洲乱妇老熟女爽到高潮的片| 久久精品国产亚洲av日韩| 亚洲国产AV无码一区二区三区| 黄色网址免费观看| 91亚洲国产成人久久精品| 久久精品无码专区免费青青| 久久青青草原亚洲av无码app| 国产精品无码一二区免费| 亚洲免费综合色在线视频| 国产三级免费电影| 国产免费福利体检区久久| 亚洲av无码一区二区三区不卡 | 无码成A毛片免费| 亚洲色偷偷av男人的天堂| 免费观看的毛片大全| 亚洲精品欧美综合四区| 日韩精品电影一区亚洲| 国产成人免费ā片在线观看老同学 | 亚洲国产成人超福利久久精品| 91网站免费观看| 亚洲AV无码国产剧情| 亚洲情侣偷拍精品| 久久久久久久岛国免费播放 | 爱丫爱丫影院在线观看免费| 亚洲精品第一国产综合精品| 夜夜嘿视频免费看| 久久www免费人成看国产片| 亚洲视频在线观看免费视频| 麻豆国产精品入口免费观看| 中文在线观看永久免费| 亚洲一区二区三区在线| 亚洲第一成人影院| 最近中文字幕mv免费高清在线| 亚洲精品无码专区久久| 久久久久久久综合日本亚洲| 免费做爰猛烈吃奶摸视频在线观看| 黄网站色视频免费看无下截| 亚洲一区二区在线视频| www亚洲一级视频com| 日本免费一区二区在线观看| 黄色网址在线免费观看|