MySql儲存過程捕獲異常回滾
阿新 • • 發佈:2019-01-29
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 ;
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 ;