用存儲過程處理復雜的業務時,可能涉及到對多張表格的操作,在任一個步驟出了問題,就需要對前面的操作回滾。舉例實現:
1 DROP PROCEDURE IF EXISTS pro_test; 2 CREATE PROCEDURE pro_test 3 ( 4 para_a varchar(50), 5 para_b varchar(50) 6 ) 7 BEGIN 8 DECLARE result_code INTEGER DEFAULT 0; -- 定義返回結果並賦初值0 9 DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET result_code=1; -- 在執行過程中出任何異常設置result_code為1 10 DECLARE CONTINUE HANDLER FOR NOT FOUND SET result_code = 2; -- 如果表中沒有下一條數據則置為2 11 12 START TRANSACTION; -- 開始事務 13 14 /* 15 * 這里寫具體的業務處理... 16 * 業務處理過程中可以根據實際情況自定義result_code 17 */ 18 19 IF result_code = 1 THEN -- 可以根據不同的業務邏輯錯誤返回不同的result_code,這里只定義了1和0 20 ROLLBACK; 21 ELSE 22 COMMIT; 23 END IF; 24 select result_code; 25 END ;