存储过程遍历更新
Posted GE12
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了存储过程遍历更新相关的知识,希望对你有一定的参考价值。
CREATE DEFINER=`root`@`%` PROCEDURE `init_reportUrl`()
BEGIN
-- 定义变量
DECLARE s INT DEFAULT 0;
DECLARE cid bigint(11);
DECLARE aa VARCHAR(11);
-- 定义游标,并将sql结果集赋值到游标中
DECLARE report CURSOR FOR SELECT id,a FROM ab;
-- 声明当游标遍历完后将标志变量置成某个值
DECLARE CONTINUE HANDLER FOR NOT FOUND SET s=1;
-- 打开游标
OPEN report;
FETCH report INTO cid,aa;
-- 当s不等于1,也就是未遍历完时,会一直循环
WHILE s<>1 DO
-- 执行业务逻辑
-- code放在这里表示没遍历一次重新生成一次
UPDATE ab2 set a=(SELECT a from ab where id=cid) where id=cid ;
-- 将游标中的值再赋值给变量,供下次循环使用
FETCH report INTO cid,aa;
-- 当s等于1时表明遍历以完成,退出循环
END WHILE;
-- 关闭游标
CLOSE report;
END
以上是关于存储过程遍历更新的主要内容,如果未能解决你的问题,请参考以下文章