MySql 中游标,事务,终止存储过程方法总结
最近在项目开发中,有段逻辑处理,需要在网站,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 中游标,事务,终止存储过程方法总结的更多相关文章
- 在MySQL中设置事务隔离级别有2种方法:
在MySQL中设置事务隔离级别有2种方法: 1 在my.cnf中设置,在mysqld选项中如下设置 [mysqld] transaction-isolation = READ-COMMITTED 2 ...
- MySQL中Procedure事务编写基础笔记
原文:MySQL中Procedure事务编写基础笔记 目录: 一.PROCEDURE: 二.CREATE PROCEDURE基本语法: 三.PROCEDURE小进阶 3.1.基本的DECLARE语 ...
- MySQL中游标使用以及读取文本数据
原文:MySQL中游标使用以及读取文本数据 前言 之前一直没有接触数据库的学习,只是本科时候修了一本数据库基本知识的课.当时只对C++感兴趣,天真的认为其它的课都没有用,数据库也是半懂不懂,胡乱就考试 ...
- 【MySQL】漫谈MySQL中的事务及其实现
最近一直在做订单类的项目,使用了事务.我们的数据库选用的是MySQL,存储引擎选用innoDB,innoDB对事务有着良好的支持.这篇文章我们一起来扒一扒事务相关的知识. 为什么要有事务? 事务广泛的 ...
- 漫谈MySql中的事务
最近一直在做订单类的项目,使用了事务.我们的数据库选用的是MySql,存储引擎选用innoDB,innoDB对事务有着良好的支持.这篇文章我们一起来扒一扒事务相关的知识. 为什么要有事务? 事务广泛的 ...
- MySql中的事务、JDBC事务、事务隔离级别
一.MySql事务 之前在Oracle中已经学习过事务了,这个东西就是这个东西,但是在MySql中用法还是有一点不同,正好再次回顾一下. 先看看MySql中的事务,默认情况下,每执行一条SQL语句,都 ...
- (转)漫谈MySql中的事务
最近一直在做订单类的项目,使用了事务.我们的数据库选用的是MySql,存储引擎选用innoDB,innoDB对事务有着良好的支持.这篇文章我们一起来扒一扒事务相关的知识. 为什么要有事务? 事务广泛的 ...
- 举例说明MySQL中的事务
一.场景导入 现在有一张仓库表,仓库表中记录了每一个物品的数量,还有一张用户表,用户购买产品,仓库表的产品数量减少,而用户拥有产品的数量增加. 但是如果仓库中的产品数量不足时怎么处理? 例子: #仓库 ...
- 【转】全面了解Mysql中的事务
为什么要有事务? 事务广泛的运用于订单系统.银行系统等多种场景.如果有以下一个场景:A用户和B用户是银行的储户.现在A要给B转账500元.那么需要做以下几件事: 1. 检查A的账户余额>500元 ...
- MySql中的事务嵌套
1.Mysql中的事务必须是InnoDB.Berkeley DB引擎,myisam不支持. 2.Mysql是不支持嵌套事务的,开启了一个事务的情况下,再开启一个事务,会隐式的提交上一个事务. 3.My ...
随机推荐
- SpringMVC 视图和视图解析器&表单标签
视图和视图解析器 请求处理方法执行完成后,最终返回一个 ModelAndView 对象.对于那些返回 String,View 或 ModeMap 等类型的处理方法,Spring MVC 也会在内部将它 ...
- PowerDesigner从Physical Data Model转Excel
参考资料:http://www.cnblogs.com/hggc/archive/2013/10/15/3369857.html 由于有把ER图转Excel的需求,幸运地找到一个可用脚本,稍做修改完成 ...
- 观点:BPM已经过时了?
在这个信息爆炸的世界,业务转型通常是以数字系统和流程的方式发生. 根据Forrester的报告“软件必须丰富你的品牌”,人们要依靠这些技术实现期望的商业成果,比如品牌联系.客户服务创新.更好的产品和提 ...
- Uart、SPI和I2C的区别
串口通信:UART.SPI.I2C区别[引用] 1.UART就是两线,一根发送一根接收,可以全双工通信,线数也比较少.数据是异步传输的,对双方的时序要求比较严格,通信速度也不是很快.在多机通信上面 ...
- PostSharp-4.3.22安装包_KeyGen发布
PostSharp-4.3.22安装包_KeyGen发布 请低调使用. 下载相关 PostSharp-4.3.22安装包_KeyGen.part1.rar PostSharp-4.3.22安装包_Ke ...
- 如何通过JDBC访问数据库
Java数据库连接(JDBC)用与在Java程序中实现数据库操作功能,它提供了执行SQL语句.访问各种数据库的方法,并为各种不同的数据库提供统一的操作接口,java.sql包中包含了JDBC操作数据库 ...
- svn co
svn co 的用法经常有两种: 第一种: 直接 svn co http://svnserver/mypro/trunk 此时, 会在你的当前目录 ...
- 利用border-radious画图形
今天才发现,border-radius可以画很多图形,下面跟我来看一下吧: 在设有宽和高的情况下画一个圆: #div1{ /*宽高相等,圆角范围为高或宽的一半或以上*/ background-colo ...
- PHP 单引号 与双引号区别
在PHP中,字符串的定义可以使用单引号,也可以使用双引号. PHP允许我们在双引号串中直接包含字串变量,双引号串中的变量将被解释而且替换,而单引号串中的内容总被认为是普通字符.例如: $foo = 2 ...
- Spring中配置文件中引用外部文件
src\dayday\conn.java package dayday;import java.sql.Connection;import java.sql.DriverManager;import ...