码迷,mamicode.com
首页 > 数据库 > 详细

MySql 中游标,事务,终止存储过程方法总结

时间:2015-10-19 18:55:18      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:

最近在项目开发中,有段逻辑处理,需要在网站,app,后台分别运行,这样给后期的维护带来了很大的不方便,容易遗漏app端或者后台,所以讲java代码转换成存储过程,把逻辑处理写在了mysql端,其中遇到游标,事务的处理。问题并不困难,只是容易忘记,做了一下总结:

DECLARE err INT DEFAULT 0;#声明一个整形变量err,默认值是0
DECLARE orderDone INT DEFAULT FALSE;-- 遍历游标结束标识
DECLARE cur_order CURSOR FOR SELECT id,uid,productid,amount FROM p_order WHERE state=0 AND orderno=i_orderNo LIMIT 0,1; -- 游标的创建
DECLARE CONTINUE HANDLER FOR NOT FOUND SET orderDone=true; -- 绑定游标结束标识(该程序中没有使用到)
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET err=1;#当sqlexception handler捕捉到异常时,设置err=1

 pro_begin:BEGIN -- 为了跳出做的准备

START TRANSACTION;-- 开始事务(创建事务点)

-- 从中取值
OPEN cur_order ; -- 打开游标
FETCH cur_order INTO intId,intUid,intPid,intOAmount; -- 使用游标
CLOSE cur_order; --关闭游标

以上是游标简单用法,因为只取第一个值,所以没有用到循环取值,游标的基本使用流程:定义游标,打开,使用,关闭

 

IF num>0 THEN
SET o_result = 3; -- 手机号已存在
LEAVE pro_begin; -- 此处是跳出存储过程,不继续执行
END IF;

 

以下是事务的回滚和提交,一般写于存储过程最后。

IF err = 1 THEN
ROLLBACK;
ELSE
COMMIT;
END IF;

end;

MySql 中游标,事务,终止存储过程方法总结

标签:

原文地址:http://www.cnblogs.com/l121171322/p/4892344.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!