DELIMITER $$
DROP PROCEDURE IF EXISTS test_sp1;
CREATE PROCEDURE test_sp1()
BEGIN
DECLARE code CHAR(5) DEFAULT '00000'; -- 错误code
DECLARE msg TEXT; -- 错误信息
DECLARE t_error INTEGER DEFAULT 0; -- 用来判断是否进行回滚
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
BEGIN
-- 获取异常code,异常信息
GET DIAGNOSTICS CONDITION 1
code = RETURNED_SQLSTATE, msg = MESSAGE_TEXT;
SET t_error=1;
END;
START TRANSACTION;
-- 核心sql语句,用分号分隔
UPDATE 表名 SET enabled_flag = 0;
UPDATE 表名 SET detail_number_1 = '123456';
IF t_error = 1 THEN
ROLLBACK;
SELECT CONCAT('sql failed, error = ',code,', message = ',msg); # 回滚时的提示信息
ELSE
COMMIT;
END IF;
END$$ -- 表示$$符号的使用已结束
DELIMITER ; -- 恢复分号分隔
CALL test_sp1;
DROP PROCEDURE IF EXISTS test_sp1;
mysql创建存储过程开启事务执行sql
最新推荐文章于 2023-06-15 17:03:52 发布