mysql 循环遍历结果集,来逐条更新

SELECT USER_ID FROM ua; 会返回USER_ID的列表

 

 通过循环来逐条更新符合USER_ID的记录

# delimiter $$ 告诉解释器使用$$结尾
delimiter $$
DROP PROCEDURE IF EXISTS test_update;
create PROCEDURE test_update ()
begin
# 声明自定义变量
DECLARE tempUserId BIGINT(20);
# 声明游标结束变量
DECLARE done INT DEFAULT 0;
# 声明游标 cr 以及游标读取到结果集最后的处理方式
DECLARE cur CURSOR FOR SELECT USER_ID FROM ua;
DECLARE continue handler for not found set done = 1;
# 打开游标
OPEN cur;
# 循环
  users_loop: LOOP
     # 获取游标中值并赋值给变量
     FETCH cur INTO tempUserId;
     # 判断游标是否到底,若到底则退出游标
     # 需要注意这个判断
     IF done=1 THEN
         LEAVE users_loop;
     END IF;
     # 需要执行的语句
     update tb_cpl_user_info set CHANNEL ='abc123' WHERE user_id = tempUserId;
  END LOOP users_loop;
-- 关闭游标
CLOSE cur;
end$$
# 最后重新定义为;
delimiter ;

# 执行存储过程
call test_update;

 

posted @ 2022-12-28 16:00  vickylinj  阅读(1003)  评论(0编辑  收藏  举报