1,先查询结果集,然后遍历结果集
2,具体代码
# delimiter $$ 告诉解释器使用$$结尾
delimiter $$
DROP PROCEDURE IF EXISTS test_update;
create PROCEDURE test_update ()
begin
# 声明自定义变量
DECLARE tempPersonId BIGINT(20);
# 声明游标结束变量
DECLARE done INT DEFAULT 0;
# 声明游标 cr 以及游标读取到结果集最后的处理方式
DECLARE cur CURSOR FOR SELECT person_id FROM ding_syn_person;
DECLARE continue handler for not found set done = 1;
# 打开游标
OPEN cur;
# 循环
users_loop: LOOP
# 获取游标中值并赋值给变量
FETCH cur INTO tempPersonId;
# 判断游标是否到底,若到底则退出游标
# 需要注意这个判断
IF done=1 THEN
LEAVE users_loop;
END IF;
# 需要执行的语句
update ding_syn_person set company_phone = 19900000000+person_id WHERE person_id = tempPersonId;
END LOOP users_loop;
-- 关闭游标
CLOSE cur;
end$$
# 最后重新定义为;
delimiter ;
# 执行存储过程
call test_update;