mysql 存储过程 中查询出数据 循环
时间: 2024-05-10 12:16:13 浏览: 114
在 MySQL 存储过程中,可以使用游标(Cursor)来循环查询出的数据。游标可以看作是一种指向结果集(ResultSet)的指针,通过移动游标可以逐行获取结果集中的数据。
以下是一个使用游标循环查询数据的示例:
```
DELIMITER //
CREATE PROCEDURE my_proc()
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE my_id INT;
DECLARE my_name VARCHAR(255);
DECLARE cur CURSOR FOR SELECT id, name FROM my_table;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur;
my_loop: LOOP
FETCH cur INTO my_id, my_name;
IF done THEN
LEAVE my_loop;
END IF;
-- 在这里可以对查询出的数据进行处理
-- 例如:打印数据
SELECT CONCAT('ID:', my_id, ', NAME:', my_name);
END LOOP;
CLOSE cur;
END //
DELIMITER ;
```
在这个示例中,首先声明了 `done`、`my_id` 和 `my_name` 三个变量,`cur` 游标用于查询 `my_table` 表中的数据。`CONTINUE HANDLER FOR NOT FOUND` 用于在游标查询结束后将 `done` 变量设置为 `TRUE`。
接着,使用 `OPEN cur` 打开游标,然后进入循环体 `my_loop`。在循环体中,使用 `FETCH cur INTO` 获取游标指向的当前行数据,判断是否查询结束,如果结束则使用 `LEAVE my_loop` 跳出循环,否则对数据进行处理,例如打印数据。
最后使用 `CLOSE cur` 关闭游标。
可以通过调用存储过程来执行循环查询出的数据:
```
CALL my_proc();
```
这样就可以将 `my_table` 表中的数据逐行打印出来。
阅读全文