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
文章列表