文章出處

BEGIN
  DECLARE proname        varchar(100); -- 存儲過程名稱
  DECLARE result         varchar(1); -- 執行結果
  DECLARE tablename      varchar(100); -- 表名

    -- 定義當前任務出現執行異常時 繼續執行其他任務
   -- 1, EXIT: 發生錯誤時退出當前代碼塊(可能是子代碼塊或者main代碼塊)
   -- 2, CONTINUE: 發送錯誤時繼續執行后續代碼
   -- v_result = '2' 意思為出現異常時設置值為2
  DECLARE CONTINUE HANDLER FOR SQLEXCEPTION set v_result = '2';

  BEGIN
        SET proname = 'pro1';
      
    BEGIN  
   -- 設置成不自動提交事務 如果autocommit=1就是自動提交
      SET SESSION autocommit=0;
      SET tablename = 'table1';
      SET result = 1;

       -- 要模擬異常可以把這里的sql語句寫錯 比如把tablename寫錯
       -- 這里寫你的主題sql語句  比如
       select * from tablename where xx=1;
       
        -- 如果出現異常 那記錄錯誤日志 ,否則提交
      IF result = 2 THEN
        SELECT  NOW(),result; -- 調試時輸出一些信息 以便觀察執行了哪個分支 完成調試可以去掉
                ROLLBACK;
           -- 記錄日志
           insert into tablename (xx, xx)  values (xx, xx);
        ELSE
        SELECT  result; -- 調試時輸出一些信息 以便觀察執行了哪個分支 完成調試可以去掉
         COMMIT;
      END IF;

      -- 設置回默認值
     set session autocommit=DEFAULT;
    END;
  END;
END

 

原創文章,轉載請注明:http://www.cnblogs.com/langtianya/p/4778130.html


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()