Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

mysql 存储过程 循环

作者:淺墨   发布日期:2026-02-08   浏览:72

DELIMITER $$

CREATE PROCEDURE ProcessRecords()
BEGIN
    DECLARE done INT DEFAULT FALSE;
    DECLARE record_id INT;
    DECLARE cur CURSOR FOR SELECT id FROM records;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    OPEN cur;

    read_loop: LOOP
        FETCH cur INTO record_id;
        IF done THEN
            LEAVE read_loop;
        END IF;
        -- 在这里处理每一行数据
        -- 例如:UPDATE records SET status = 'processed' WHERE id = record_id;
    END LOOP;

    CLOSE cur;
END$$

DELIMITER ;

解释说明:

  1. DELIMITER $$:更改语句结束符为 $$,以便在存储过程中使用分号。
  2. DECLARE done INT DEFAULT FALSE;:声明一个标志变量 done,用于判断循环是否结束。
  3. DECLARE record_id INT;:声明一个变量 record_id,用于存储从游标中获取的每一条记录的 ID。
  4. DECLARE cur CURSOR FOR SELECT id FROM records;:声明一个游标 cur,用于遍历 records 表中的所有记录。
  5. DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;:当游标没有更多记录时,设置 doneTRUE
  6. OPEN cur;:打开游标。
  7. read_loop: LOOP:开始一个名为 read_loop 的循环。
  8. FETCH cur INTO record_id;:从游标中获取下一条记录的 ID 并存入 record_id 变量。
  9. IF done THEN LEAVE read_loop; END IF;:如果 doneTRUE,则退出循环。
  10. -- 在这里处理每一行数据:在循环体内可以添加对每一行数据的处理逻辑。
  11. CLOSE cur;:关闭游标。
  12. END$$:结束存储过程定义,并恢复默认的语句结束符。

上一篇:mysql减法函数

下一篇:mysql的dateformat用法

大家都在看

mysqlavg函数保留小数

mysql显示表内容

mysql经纬度距离计算

mysql 加密

存储过程mysql

mysql 1265

mysql with语句

mysql时间加减

mysql查询表名,模糊匹配

brew 启动mysql

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站