mysql存储过程+游标循环遍历 判断 赋值 等实例一
来源:互联网 发布:php cgi 管理程序 编辑:程序博客网 时间:2024/05/29 19:41
1.先说下本文的背景以及结合什么样的需求作出具体的功能:最近本人公司半道子不知道老板从哪旮沓里(老板应该不看这类技术型博客,O(∩_∩)O)接手了一个半吊子项目来(接盘侠),先不谈这个项目是咋滴咋滴的。这个项目的注册逻辑是有推荐关系的,分推荐注册和无推荐注册两种,这样的话就会形成一条推荐关系链,但是前期开发项目的人没有在数据库维护好这个推荐关系链,导致到了我们这里这些是没有数据的,因此需要根据每个有推荐人的用户来把他们的推荐关系链修复好,也就是根据用户自己的推荐人获取到推荐人的id,然后再通过推荐人id的推荐人去查找上一级的推荐人,以此类推,最后以推荐人id-推荐人id的形式形成一条推荐关系链,最前面的就是最早注册的哪个人,最末端就是用户自己的推荐人。2.本人由于也不是经常写存储过程,因此也是网上查找了很多资料,本次需求的逻辑也就是通过游标进行循环遍历,然后判断,赋值等一系列操作,先查找出全部的用户id,然后通过定义游标赋值给游标,然后进行循环(这个循环和iterator很类似),好了 废话结束,上sql,希望这个能帮到看本篇博文的你。CREATE DEFINER=`admin`@`%` PROCEDURE `updateRecommended`()BEGINDECLARE my_recommended INT;DECLARE my_id INT;DECLARE inviteRelationStr VARCHAR(10000);-- 创建自定义控制游标循环变量DECLARE done TINYINT DEFAULT FALSE;-- 创建自定义游标 并输入结果集DECLARE my_cursor CURSOR FOR (SELECT id FROM hft_user);DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;SET inviteRelationStr = '';-- 打开游标OPEN my_cursor;-- 循环开始my_loop: LOOPFETCH NEXT FROM my_cursor INTO my_id;IF done THENLEAVE my_loop;END IF;-- 开始操作SELECT recommended INTO my_recommended FROM hft_user WHERE id = my_id;WHILE my_recommended IS NOT NULL OR my_recommended != '' DOSET inviteRelationStr = CONCAT(my_recommended,'-',inviteRelationStr);SELECT recommended INTO my_recommended FROM hft_user WHERE id = my_recommended;END WHILE;-- 修改推荐连UPDATE hft_user SET invite_relation = inviteRelationStr WHERE id = my_id;SET inviteRelationStr = '';-- 提交事务COMMIT;END LOOP my_loop;CLOSE my_cursor;-- 关闭游标END
纯手打,如有雷同,肯定是抄袭~~
阅读全文
0 0
- mysql存储过程+游标循环遍历 判断 赋值 等实例一
- mysql存储过程+游标循环遍历 判断 赋值 等实例二
- mysql存储过程查询结果循环遍历 判断 赋值 游标等基本操作
- mysql存储过程查询结果循环遍历 判断 赋值 游标等基本操作
- mysql存储过程查询结果循环遍历 判断 赋值 游标等基本操作
- mysql存储过程查询结果循环遍历 判断 赋值 游标等基本操作
- mysql存储过程简单实例 变量赋值 游标遍历
- MYSQL存储过程 游标 循环等
- 【MySQL】存储过程、游标、循环简单实例
- SQLServer存储过程简单实例 变量赋值 游标遍历
- oracle存储过程简单实例 变量赋值 游标遍历
- mysql 存储过程 游标 循环
- MySQL 存储,游标,变量,循环,IF判断
- MySQL 存储过程循环遍历
- mysql存储过程之游标遍历数据表
- mysql存储过程之游标遍历数据表
- mysql存储过程while 遍历游标
- mysql存储过程之游标遍历数据表
- 20171218日记账流水(复盘)
- web加载网页设置
- ORACLE数据库创建表空间ORA-03206报错的解决方案
- Android 内存优化
- Docker下实战zabbix三部曲之三:自定义监控项
- mysql存储过程+游标循环遍历 判断 赋值 等实例一
- JS的内置对象2
- Android为啥会有65536的限制
- 走进git
- Github推荐:MySQL DBA不可错过的五大开源管理工具!
- 有哪些是Apache Mesos能做到,而Kubernetes做不到的
- 电竞盛宴ROG Day:不止是一场信仰集结的狂欢
- CGU APAC 2017盛大开幕,七彩虹与英伟达联手打造电竞盛宴
- 《至爱梵高》体验大师作品,看BOE画屏如何开启数字艺术之路