mysql系列(十一)异常处理
DROP PROCEDURE IF EXISTS `SP_MODEL`; DELIMITER ;; CREATE PROCEDURE `SP_MODEL`(IN V_TYPE INT) BEGIN /**********存储过程模版,结合了·返回自定义错误信息·错误退出··事物回滚·的功能***********/ DECLARE V_TEST INT DEFAULT 0; DECLARE V_ERR_NO INT DEFAULT 0; DECLARE V_ERR_MSG VARCHAR(100) DEFAULT '执行成功'; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION,SQLWARNING,NOT FOUND SET V_ERR_NO=1; -- CREATE TABLE `test_error` ( -- `a` int(11) NOT NULL, -- `b` int(11) DEFAULT NULL, -- PRIMARY KEY (`a`) -- ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- TRUNCATE TABLE TEST_ERROR; -- CALL SP_MODEL(1); -- SELECT * FROM TEST_ERROR; START TRANSACTION; Label:-- 执行过程中出现错误则跳出此Label BEGIN IF V_TYPE=1 THEN INSERT INTO TEST_ERROR(a,b) VALUES(1,1); INSERT INTO TEST_ERROR(a,b) VALUES(1,1); IF V_ERR_NO=1 THEN SET V_ERR_MSG='您已经插过啦,别再重复插~'; -- LEAVE Label; END IF; SET V_TEST=1; INSERT INTO TEST_ERROR(a,b) VALUES(3,'a'); IF V_ERR_NO=1 THEN SET V_ERR_MSG='尺寸不对,插不进来~'; LEAVE Label; END IF; INSERT INTO TEST_ERROR(a,b) VALUES(4,1); SET V_TEST=2; ELSE SET V_ERR_MSG='传入参数V_TYPE不正确'; SET V_ERR_NO=1; -- 直接设置此变量值为1,主动抛出异常 LEAVE Label; END IF; END Label; IF V_ERR_NO=1 THEN ROLLBACK; ELSE COMMIT; END IF; SELECT V_ERR_NO AS ERR_NO,V_ERR_MSG AS ERR_MSG, V_TEST AS TEST; -- 返回执行结果 END ;; DELIMITER ;
以上就是 mysql系列(十一)异常处理的内容,更多相关内容请关注PHP中文网(www.php.cn)!
系统简介:冰兔BToo网店系统采用高端技术架构,具备超强负载能力,极速数据处理能力、高效灵活、安全稳定;模板设计制作简单、灵活、多元;系统功能十分全面,商品、会员、订单管理功能异常丰富。秒杀、团购、优惠、现金、卡券、打折等促销模式十分全面;更为人性化的商品订单管理,融合了多种控制和独特地管理机制;两大模块无限级别的会员管理系统结合积分机制、实现有效的推广获得更多的盈利!本次更新说明:1. 增加了新









