mysql遍历写法(模块代码)

本文提供了一个Windows下MySQL8.0的SQL存储过程模板,用于数据遍历。作者分享了创建、使用和注意事项,以便在需要时快速重用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求:提供一个模板代码,方便日后速查并重用

系统:-

模板/框架:-

环境:window下的mysql8.0

语言:sql

不得不承认,有些事情不常运用的,就会被遗忘.一直写需求,忽然来个数据运维数据需求,还用到mysql的遍历时,真心话一句:不查资料写不出.在此写个简单遍历模板代码,以供他日一时之需.

-- 如果存在,则删除存储过程
DROP PROCEDURE IF EXISTS fetch_process;
-- 定义$$为分隔符
DELIMITER $$
-- 创建存储过程
CREATE PROCEDURE fetch_process()
-- 开启事务
BEGIN
		-- 定义变量
    DECLARE done INT DEFAULT 0;
		DECLARE id INT;
		DECLARE data1 VARCHAR(50);
		-- 定义游标
    DECLARE cur CURSOR FOR SELECT tb1.id, tb1.data1 FROM tb1;
		-- 定义跳出循环的条件
		DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
    -- 打开游标
    OPEN cur;
		-- 开始循环
    read_loop: LOOP
        FETCH cur INTO id, data1;
        
        IF done THEN
            LEAVE read_loop;
        END IF;


				/*

						处理逻辑

				
        -- 例如
        SET id = id + 1;
        INSERT INTO `testdb`.`tb2` ( `data1`, `data2`) VALUES ( data1, '3');
					
				*/



				SET done = 0;
		-- 结束循环
    END LOOP read_loop;
    -- 关闭游标
    CLOSE cur;
END $$
-- 重新定义;为分隔符
DELIMITER ;
-- 调用存储过程进行遍历
CALL fetch_process();
-- 如果存在,则删除存储过程
DROP PROCEDURE IF EXISTS fetch_process;


这个模板采用时注意点

1.按需求修改  [定义游标] 和[处理逻辑]的代码,则能运行

2.如果临时变量不够,可以自行添加