参考: https://stackoverflow.com/questions/26338033/mysql-stored-procedure-print-error-message-and-rollback
本文可转载,转载请注明出处。
DELIMITER ;;
CREATE PROCEDURE `testProc`()
BEGIN
#------捕获异常,并打印异常msg-----START-----#
DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING
BEGIN
GET DIAGNOSTICS CONDITION 1
@p1 = RETURNED_SQLSTATE, @p2 = MESSAGE_TEXT;
SELECT @p1 as RETURNED_SQLSTATE , @p2 as MESSAGE_TEXT;
ROLLBACK;
call WRITE_LOG('E', 'MSG_BT_KEYWORD_I_001', CONCAT('keyword_alert rollback : ', @p2));
END;
#------捕获异常,并打印异常msg----END------#
START TRANSACTION; ## 开启事务
##-------你的处理-----##
COMMIT; ## 没有错误提交
END
;;
DELIMITER ;