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

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

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

    程序人生

    記錄編程中的點點滴滴

    關(guān)于自治事務(wù)

    操作環(huán)境 oracle11g

    CREATE TABLE EMPLOYEE_T
    (
    EMPLOYEE_ID VARCHAR2(20),
    EMPLOYEE_NAME VARCHAR2(20)
    );

    在存儲過程中,尤其是一組相互調(diào)用的存儲過程中如果要為其中的每個存儲過程記錄執(zhí)行日志時會存在比較麻煩的問題。即在操作出現(xiàn)異常時如何記錄相關(guān)異常日志(這個時候的日志應(yīng)該才是最重要的吧>_<!!!),此時如果調(diào)用一般的事務(wù)方式進(jìn)行commit以保存日志則腳本編寫會相當(dāng)煩瑣且維護(hù)性差。此時可以考慮采用自治事務(wù)的方式來提交執(zhí)行日志

    自治事務(wù)相當(dāng)于與當(dāng)前事務(wù)并行的另一個事務(wù),其提交與否并不影響當(dāng)前主要事務(wù)的提交與回滾,通常定義在函數(shù)與存儲過程之中方式如下

    CREATE OR REPLACE PROCEDURE SP_EMPLOYEE_AUTONOMOUS
    IS

         PRAGMA AUTONOMOUS_TRANSACTION;

    BEGIN    
                
            INSERT INTO EMPLOYEE_T(EMPLOYEE_ID,EMPLOYEE_NAME)VALUES('007','TS5');
            INSERT INTO EMPLOYEE_T(EMPLOYEE_ID,EMPLOYEE_NAME)VALUES('008','TS6');
       
            COMMIT;    
     
    END SP_EMPLOYEE_AUTONOMOUS;

    配合實現(xiàn)方式為

    CREATE OR REPLACE PROCEDURE SP_EMPLOYEE
    IS

    BEGIN

        INSERT INTO EMPLOYEE_T(EMPLOYEE_ID,EMPLOYEE_NAME)VALUES('003','TS1');
        INSERT INTO EMPLOYEE_T(EMPLOYEE_ID,EMPLOYEE_NAME)VALUES('004','TS2');
        INSERT INTO EMPLOYEE_T(EMPLOYEE_ID,EMPLOYEE_NAME)VALUES('005','TS3');
        INSERT INTO EMPLOYEE_T(EMPLOYEE_ID,EMPLOYEE_NAME)VALUES('006','TS4');
       
        SP_EMPLOYEE_AUTONOMOUS();
       
        INSERT INTO EMPLOYEE_T(EMPLOYEE_ID,EMPLOYEE_NAME)VALUES('009','TS7');
        INSERT INTO EMPLOYEE_T(EMPLOYEE_ID,EMPLOYEE_NAME)VALUES('0010','TS8');
       
        ROLLBACK;
     
    END SP_EMPLOYEE;

    則執(zhí)行的結(jié)果則只插入007與008兩條記錄

    PS:一種錯誤的實現(xiàn)方式,如下

    CREATE OR REPLACE PROCEDURE SP_EMPLOYEE_AUTONOMOUS
    IS


    BEGIN

            INSERT INTO EMPLOYEE_T(EMPLOYEE_ID,EMPLOYEE_NAME)VALUES('001','TS1');
            INSERT INTO EMPLOYEE_T(EMPLOYEE_ID,EMPLOYEE_NAME)VALUES('002','TS2');

            PRAGMA AUTONOMOUS_TRANSACTION;
           
            INSERT INTO EMPLOYEE_T(EMPLOYEE_ID,EMPLOYEE_NAME)VALUES('007','TS5');
            INSERT INTO EMPLOYEE_T(EMPLOYEE_ID,EMPLOYEE_NAME)VALUES('008','TS6');
       
            COMMIT;
           
            INSERT INTO EMPLOYEE_T(EMPLOYEE_ID,EMPLOYEE_NAME)VALUES('003','TS7');
            INSERT INTO EMPLOYEE_T(EMPLOYEE_ID,EMPLOYEE_NAME)VALUES('004','TS8');
           
            ROLLBACK;
       
     
    END SP_EMPLOYEE_AUTONOMOUS;


    此時編譯與執(zhí)行SP_EMPLOYEE_AUTONOMOUS且不報錯,但是執(zhí)行的結(jié)果就~~~~~~~~~~~~~~~~~  ^_^

    posted on 2010-12-31 12:00 zhaonp 閱讀(231) 評論(0)  編輯  收藏


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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲人成影院在线无码观看| 国内自产拍自a免费毛片| 自拍偷自拍亚洲精品被多人伦好爽| 亚洲乱妇熟女爽到高潮的片| 成人免费毛片视频| 亚洲变态另类一区二区三区| 国产精品免费看久久久无码| 无遮挡呻吟娇喘视频免费播放| 国产又粗又长又硬免费视频 | 毛片免费观看视频| 亚洲熟妇AV乱码在线观看| 在线免费一区二区| 国产大陆亚洲精品国产| 精品国产亚洲男女在线线电影| a级毛片毛片免费观看久潮喷| 亚洲AV中文无码乱人伦下载 | 日韩免费视频一区| 一区二区三区免费视频观看| 亚洲综合伊人久久大杳蕉| 毛片在线播放免费观看| 亚洲精品福利视频| 99视频在线精品免费观看6| 亚洲av成本人无码网站| 国产亚洲大尺度无码无码专线| 国产成人久久AV免费| 亚洲日本乱码卡2卡3卡新区| 日本免费电影一区| a级毛片免费全部播放| 亚洲成无码人在线观看| 免费无遮挡无码永久在线观看视频 | 成年轻人网站色免费看| 成人特级毛片69免费观看| 亚洲高清专区日韩精品| 黄色成人网站免费无码av| 一级毛片a免费播放王色电影| 亚洲精品高清国产一久久| 国产精品酒店视频免费看| 日韩精品人妻系列无码专区免费| 亚洲日韩乱码中文字幕| 亚洲人成在线播放网站| 噜噜嘿在线视频免费观看|