赞
踩
表结构如下:
建立存储过程:
- DELIMITER $$
- CREATE PROCEDURE p1( OUT p_return_code INTEGER )
- BEGIN
- DECLARE EXIT HANDLER FOR SQLEXCEPTION -- 捕捉错误,如果是sql错误就执行里面的
- BEGIN
- -- ERROR
- SET p_return_code = 1; -- 返回值1,说明sql错误
- ROLLBACK; -- 回滚数据
- END;
-
- DECLARE EXIT HANDLER FOR SQLWARNING -- 捕捉错误,如果是sql警告就执行里面的
- BEGIN
- -- WARNING
- SET p_return_code = 2; -- 返回值2,说明出现sql警告
- ROLLBACK; -- 回滚数据
- END;
-
- START TRANSACTION; -- 开始事务
- -- 执行sql语句
- UPDATE person SET pointps = pointps - 'abc' WHERE personName = '张三';
- UPDATE person SET pointps = pointps + 500 WHERE personName = '李四';
- COMMIT; -- 提交
-
- -- SUCCESS
- SET p_return_code = 0; -- 返回0说明成功
-
- END $$
- DELIMITER ;
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
调用存储过程:
CALL p1(@u);
查询调用结果:
SELECT @u;
再回到数据库刷新,发现数据未发生变化,发生了数据回滚。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。