关于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存储过程异常处理的一点心得的更多相关文章
- mysql存储过程异常处理
DELIMITER $$ USE `mtnoh_aaa_platform`$$ DROP PROCEDURE IF EXISTS `proc_eoms_electric_power_generatio ...
- Mysql存储过程(四)——异常处理
http://blog.csdn.net/crazylaa/article/details/5368421 有时候,不希望存储过程抛出错误中止执行,而是希望返回一个错误码. MySQL 支持异常处理, ...
- mysql存储过程之异常处理篇
mysql存储过程也提供了对异常处理的功能:通过定义HANDLER来完成异常声明的实现 语法如下: DECLARE handler_type HANDLER FOR condition_value[, ...
- MYSQL 存储过程 多表更新异常捕捉和异常处理方式
今天在做MYSQL 存储过程 多表更新的功能 多表更新时候注意事项 1.首先是确保多表更新能够一次执行,途中没有哪个表的sql语句错误 2.上线后修改表结构及字段,请注意检查是否影响mysql 过 ...
- MySQL存储过程学习笔记
MySQL在5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣.MySQL 5.0终于开始支持存储过程了. MySQL的关键字大小写通用.该学习笔记对关键字使用大写:变量名,表名使用小写. ...
- MySQL存储过程(转)
一.MySQL 创建存储过程 "pr_add" 是个简单的 MySQL 存储过程,这个存储过程有两个 int 类型的输入参数 "a"."b" ...
- MySql存储过程
MySQL 存储过程 ```sql CREATE PROCEDURE myprocedure (IN para01 INTEGER) BEGIN DECLARE var01 CHAR(10); IF ...
- mysql存储过程详解
mysql存储过程详解 1. 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的S ...
- mysql存储过程详细教程
记录mysql存储过程中的关键语法:DELIMITER // 声明语句结束符,用于区分;CREATE PROCEDURE demo_in_parameter(IN p_in int) 声明存储过程 ...
随机推荐
- 【转】IntelliJ 创建main函数快捷
http://blog.csdn.net/tiantiandjava/article/details/42269173 今天偶然发现了IntelliJ中 创建main函数的快捷键,依次还有for循环, ...
- CPP-基础:关于内存分配
1:c中的malloc和c++中的new有什么区别 (1)new.delete 是操作符,可以重载,只能在C++中使用.(2)malloc.free是函数,可以覆盖,C.C++中都可以使用.(3)ne ...
- [置顶] IIS应用程序池多工作进程设置及Session共享
[置顶] IIS应用程序池多工作进程设置及Session共享 在调优iis的时候,朋友分享给我一个特别棒的设置方法步骤,感谢好朋友的分享. IIS应用程序池多工作进程设置及Session共享 1 ...
- Bootstrap历练实例:弹出提示信息的样式按钮
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- Bootstrap 网格系统(Grid System)实例4
Bootstrap 网格系统(Grid System)实例4:中型和大型设备 <!DOCTYPE html><html><head><meta http-eq ...
- shell脚本,逻辑结构题练习。
awk '/5/{a=1}!a' file2结果:1234解释:第一行 /5/不匹配跳过{a=1},继续!a,此时a没有值属于假取反为真,故输出第一行 第二行 /5/不匹配跳过{a=1},继续!a,此 ...
- CS193p Lecture 5 - View Controller Lifecycle
1. UITextView @property(nonatomic,readonly,retain) NSTextStorage *textStorage 是 NSMutableAttributedS ...
- CF-1096C Polygon for the Angle
CF-1096C Polygon for the Angle https://codeforces.com/contest/1096/problem/C 题意:给一个角度ang(1<=ang&l ...
- (57)zabbix Slide shows幻灯片展示
定义好screen之后,我们想了解服务器状况之时,一般会一个个screen点过去,zabbix提供了幻灯片展示方法,可以定义多个Slide,一个slide中可以包含多个screen. 创建slide ...
- 本地开发环境中部署已经写好的magento2.0项目
环境:apache2.4.25+php7.0.16+mysql5.7 (注意版本搭配,详细可以看magento2.0官网看配置) apache最好使用80端口,host文件配置本地虚拟域名 php.i ...