mysql 游标 事务_mySql 事务,游标以及循环

对于Mysql 我也是个初学者,在这里就写写我知道的皮毛,若有错误直管拍砖,我也好学习学习,先谢过!

首先 mysql 没有 Sql sever 一样的 begin try     begin tran  处理语句   commit tran  end try begin catch   rollback   tran  end catch 。mysql  的事务机制 我理解就是捕捉错误句柄,如果存在就应该rollback,不存在就可以commit.不废话上代码:

1 DECLARE sys_error INT DEFAULT 0; //定义一个表示出错返回的错误变量2

3 DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET sys_error=1; //定义设置如果有错误句柄 就将 sys_error 设置为14

5 START TRANSACTION; //开始事务6

7

8 /*写处理逻辑的语句*/

9

10 IF sys_error=1 THEN

11 ROLLBACK; //有错误回滚12 ELSE

13 COMMIT; //没有错误提交14 END IF;

下面说下 mysql 的游标和循环

其实游标也是循环的读取数据所以我下面就是说下循环的问题

Mysql 的循环是否结束其实也是通过标记的,什么意思我举个例子 当我们有两层循环(嵌套)

一般 是:

DECLARE i INT DEFAULT 1;

DECLARE j INT DEFAULT 1;

WHILE i<5

DO

BEGIN

SET j=1;

WHILE j<4

DO

BEGIN

SELECT i,j;

SET j=j+1;

END ;

END WHILE;

SET i=i+1;

END ;

END WHILE;

这样 只执行了  i=1,J=1,2,3 的结果  i=2 后面的都没有执行

mysql 中的循环是通过状态句柄控制的,跟事务的类似,不废话了上代码

DECLARE Done INT DEFAULT 0;

DECLARE i INT DEFAULT 1;

DECLARE j INT DEFAULT 1;

DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET Done = 1; //个人理解就是循环结束了就设置成1了,就像sql 里游标读取状态(@@FETCH_STATUS )至于 02000 我只能猜是循环有关的状态码。

WHILE i<5

DO

BEGIN

SET j=1;

WHILE j<4

DO

BEGIN

SELECT i,j;

SET j=j+1;

END ;

END WHILE;

SET i=i+1;

SET Done =0; //如果少这一步,外层循环也会直接退出 就是会像上面的结果一样。

END ;

END WHILE;

好了大概就讲这些,还有一个就是在mysql 的局部变量和全局变量,特别是用户第三方的mysql 工具客户端,在客户端一样没有断开的情况下,全局变量一直保存着原来的值。具体说法可以去找mysql的资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值