1. 程式人生 > >MySql儲存過程捕獲異常回滾

MySql儲存過程捕獲異常回滾

DROP PROCEDURE IF EXISTS pro_test;
CREATE PROCEDURE pro_test
(
    para_a varchar(50),
    para_b varchar(50)
)
BEGIN
    DECLARE result_code INTEGER DEFAULT 0; -- 定義返回結果並賦初值0
    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET result_code=1; -- 在執行過程中出任何異常設定result_code為1
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET result_code = 2; -- 如果表中沒有下一條資料則置為2


    START TRANSACTION; -- 開始事務


    /*
    * 這裡寫具體的業務處理...
    * 業務處理過程中可以根據實際情況自定義result_code
    */


    IF result_code = 1 THEN -- 可以根據不同的業務邏輯錯誤返回不同的result_code,這裡只定義了1和0
        ROLLBACK; 
    ELSE 
        COMMIT; 
    END IF;
select result_code;
END ;