大家好,今天记录一下项目中使用的mysql游标技术,可以使用游标的循环控制,实现一些批量更新数据的操作,那接下来请大家跟我一起来:
下面是一段根据游标变量对资金表数据进行批量更新的一个操作
-- 如果存在存储过程test,则进行删除 DROP PROCEDURE IF EXISTS test; -- 创建存储过程 CREATE PROCEDURE test() -- 开始标记 BEGIN -- 声明变量tmp,默认值为0 declare tmp int default 0; -- 声明变量done,默认值为-1 declare done int default -1; -- 声明游标myCursor, 游标值为user表中uid,可以有很多个 DECLARE myCursor CURSOR FOR SELECT uid FROM user; -- 声明一个控制器 declare continue handler for not found set done=1; -- 打开游标 OPEN myCursor; -- 标记 myloop : LOOP -- 将游标的值变更到tmp变量中,如果done=1,则离开标记 FETCH myCursor INTO tmp; if done = 1 then leave myloop; end if; SET @uid = tmp; -- 获取差额 SET @cha = (select money - usedmoney from money where uid = @uid); -- 将差额和uid进行显示 SELECT @cha, @uid; -- 修改资金表 update money set totalmoney = totalmoney + @cha where uid = @uid; -- 结束标记 END LOOP myloop; -- 关闭游标 CLOSE myCursor; END -- 调用存储过程 CALL test();
在以上的代码中,我加了很详细的注释供大家清晰的理解每一步的涵义
希望大家可以有所帮助,加油!
相关推荐
Mysql游标(循环操作)
mysql游标使用的整个过程为: 1.创建游标 代码如下:DECLARE calc_bonus CURSOR FOR SELECT id, salary, commission FROM employees; 2.打开游标 代码如下:OPEN calc_bonus; 3.使用游标 代码如下:FETCH calc_bonus ...
带游标的mysql存储过程例子。
[mysql游标的用法及作用] 例子: 当前有三张表A、B、C其中A和B是一对多关系,B和C是一对多关系,现在需要将B中A表的主键存到C中; 常规思路就是将B中查询出来然后通过一个update语句来更新C表就可以了,但是B表中有...
Mysql从5.0开始支持存储过程和trigger,游标在递归树结构中非常好用
NULL 博文链接:https://fangyong2006.iteye.com/blog/768291
NULL 博文链接:https://yuhuiblog695685688425687986842568269.iteye.com/blog/2424995
mysql游标嵌套[文].pdf
本文实例讲述了mysql游标的原理与用法。分享给大家供大家参考,具体如下: 本文内容: 什么是游标 创建游标 使用游标 首发日期:2018-04-18 什么是游标: 如果你前面看过mysql函数,会发现无法使用返回多行...
本文实例讲述了MySQL游标概念与用法。分享给大家供大家参考,具体如下: 1、游标的概念(Cursor) 一条sql,对应N条资源,取出资源的接口,就是游标,沿着游标,可以一次取出1行。如果开发过安卓的同学应该知道有一...
在MySQL当中的游标其实和java中的iterator迭代器这种类型类似,都是一个集合,然后通过循环遍历,游标现在是用来处理结果集的,首先要设置一个游标的结束
Mysql存储过程游标触发器
本篇文章是对MySQL游标的具体使用进行了详细的分析介绍,需要的朋友参考下 测试表level 代码如下: createtabletest.level(namevarchar(20)); 再insert些数据; 初始化 代码如下: ...
详细讲解了mysql中游标的使用方法,希望能对各位有所帮助。