今天写一个mysql存储过程,根据自己的需求要遍历一个数据表,因为对存储过程用的不多,语法不甚熟悉,加之存储过程没有调试环境,花了不少时间才慢慢弄好,故留个痕迹。
1 BEGIN 2 DECLARE Done INT DEFAULT 0; 3
4 DECLARE CurrentLingQi INT; 5
6 DECLARE ShizuName VARCHAR(30); 7
/* 声明游标 */ 8 DECLARE rs CURSOR FOR SELECT NodeName, LingQi FROM socialrelation; 9
/* 异常处理 */10 DECLARE CONTINUE HANDLER FOR SQLSTATE
'02000' SET Done = 1;11
12
/* 打开游标 */13 OPEN rs;
14
15
/* 逐个取出当前记录LingQi字段的值,需要进行最大值的判断 */16 FETCH NEXT FROM rs INTO ShizuName, CurrentLingQi;
17
/* 遍历数据表 */18 REPEAT19 IF NOT Done THEN20 SET CurrentLingQi = CurrentLingQi + 60;21
/* 如果更新后灵气值大于允许的最大值,则就设置为最大值 */22 IF CurrentLingQi >= 1800 THEN23 UPDATE socialrelation SET LingQi = 1800 WHERE NodeName = ShizuName;24 ELSE25
/* 否则,正常更新 */26 UPDATE socialrelation SET LingQi = LingQi + 60 WHERE NodeName = ShizuName;27 END IF;28 END IF;29
30 FETCH NEXT FROM rs INTO ShizuName, CurrentLingQi;31 32 UNTIL Done END REPEAT;33
34
/* 关闭游标 */35 CLOSE rs;36 END |
今天写一个mysql存储过程,根据自己的需求要遍历一个数据表,因为对存储过程用的不多,语法不甚熟悉,加之存储过程没有调试环境,花了不少时间才慢慢弄好,故留个痕迹。
MySQL存储过程遍历示例
本文介绍了一个MySQL存储过程的实例,该过程用于遍历数据表并更新特定字段的值。通过使用游标和条件判断,实现了对表中每一行记录的处理。
3184

被折叠的 条评论
为什么被折叠?



