CREATE DEFINER=`root`@`192.168.1.%` PROCEDURE `paimin`() BEGIN DECLARE zan1 INT DEFAULT 1; DECLARE cai1 INT DEFAULT 1; DECLARE ping1 INT DEFAULT 1; DECLARE fen1 INT DEFAULT 1; DECLARE shan1 INT DEFAULT 1; DECLARE bzan INT DEFAULT 1; DECLARE bcai INT DEFAULT 1; DECLARE bping INT DEFAULT 1; DECLARE bfen INT DEFAULT 1; DECLARE bshan INT DEFAULT 1; DECLARE Done INT DEFAULT 0; DECLARE CurrentPaiMing INT DEFAULT 0; DECLARE ZUBOID VARCHAR (6); DECLARE ZUBOGOLD INT DEFAULT 0; DECLARE ud_row VARCHAR (6); DECLARE paimin_row INT DEFAULT 0; DECLARE rs2 CURSOR FOR SELECT ud, zan, cai, ping, fen, shan, ( zan * 1 - cai * 1 + ping * 1 + fen * 1 + shan * 1 ) paimin FROM lfsj_sort_user_info; /* 声明游标 */ DECLARE rs CURSOR FOR SELECT ZID, GOLD FROM ( SELECT ZID, SUM(GOLD) GOLD FROM T_ANCHOR_GAINS GROUP BY ZID ) A ORDER BY GOLD DESC; /* 异常处理 */ DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET Done = 1; /* 打开游标 */ OPEN rs; /* 逐个取出当前记录LingQi字段的值,需要进行最大值的判断 */ FETCH NEXT FROM rs INTO ZUBOID, ZUBOGOLD; /* 遍历数据表 */ REPEAT IF NOT Done THEN SET CurrentPaiMing = CurrentPaiMing + 1; UPDATE t_user_info SET RANKING = CurrentPaiMing WHERE ID = ZUBOID; UPDATE lfsj_sort_user_info SET shan = ZUBOGOLD WHERE ud = ZUBOID; END IF; FETCH NEXT FROM rs INTO ZUBOID, ZUBOGOLD; UNTIL Done END REPEAT ; /* 关闭游标 */ CLOSE rs; /* 声明游标 */ /* 异常处理 */ -- DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET Done2 = 1; UPDATE t_user_info SET RANKING = 0; SET Done = 0; /* 打开游标 */ OPEN rs2; /* 逐个取出当前记录LingQi字段的值,需要进行最大值的判断 */ FETCH NEXT FROM rs2 INTO ud_row, bzan, bcai, bping, bfen, bshan, paimin_row; /* 遍历数据表 */ REPEAT IF NOT Done THEN UPDATE t_user_info a SET a.RANKING = paimin_row, a.SNUM = concat( '{"cai":"', bcai, '"cai":"', bcai, '","fen":', bfen, '","ping":', bping, '","shan":', bshan, '"}' ) WHERE a.ID = ud_row; INSERT INTO `kwc`.`cc` (`id`) VALUES ('aa' ); INSERT INTO `kwc`.`cc` (`id`) VALUES (concat( '{"cai":"', bcai, '"cai":"', bcai, '","fen":', bfen, '","ping":', bping, '","shan":', bshan, '"}' ) ); END IF; FETCH NEXT FROM rs2 INTO ud_row, bzan, bcai, bping, bfen, bshan, paimin_row; UNTIL Done END REPEAT ; /* 关闭游标 */ CLOSE rs2; END
相关推荐
Mysql游标(循环操作)
带游标的mysql存储过程例子。
mysql游标使用的整个过程为: 1.创建游标 代码如下:DECLARE calc_bonus CURSOR FOR SELECT id, salary, commission FROM employees; 2.打开游标 代码如下:OPEN calc_bonus; 3.使用游标 代码如下:FETCH calc_bonus ...
Mysql从5.0开始支持存储过程和trigger,游标在递归树结构中非常好用
NULL 博文链接:https://fangyong2006.iteye.com/blog/768291
[mysql游标的用法及作用] 例子: 当前有三张表A、B、C其中A和B是一对多关系,B和C是一对多关系,现在需要将B中A表的主键存到C中; 常规思路就是将B中查询出来然后通过一个update语句来更新C表就可以了,但是B表中有...
NULL 博文链接:https://yuhuiblog695685688425687986842568269.iteye.com/blog/2424995
mysql游标嵌套[文].pdf
Mysql存储过程游标触发器
本文实例讲述了mysql游标的原理与用法。分享给大家供大家参考,具体如下: 本文内容: 什么是游标 创建游标 使用游标 首发日期:2018-04-18 什么是游标: 如果你前面看过mysql函数,会发现无法使用返回多行...
本文实例讲述了MySQL游标概念与用法。分享给大家供大家参考,具体如下: 1、游标的概念(Cursor) 一条sql,对应N条资源,取出资源的接口,就是游标,沿着游标,可以一次取出1行。如果开发过安卓的同学应该知道有一...
MySql存储过程,游标的使用方法,速度极快!
在MySQL当中的游标其实和java中的iterator迭代器这种类型类似,都是一个集合,然后通过循环遍历,游标现在是用来处理结果集的,首先要设置一个游标的结束
在oracle数据库中,使用游标与过程实现排名。