- 使用游标进行数据逐行处理的步骤:
- 声明游标:使用
DECLARE
语句声明一个游标,指定要执行的SELECT
查询。
- 打开游标:使用
OPEN
语句打开声明的游标,这会执行SELECT
查询并将结果集保存起来。
- 获取数据:使用
FETCH
语句从游标中逐行获取数据,并将数据存储到声明的变量中。
- 处理数据:对获取到的数据进行相应的处理操作。
- 关闭游标:使用
CLOSE
语句关闭游标,释放相关资源。
- 示例代码:
-- 创建存储过程
DELIMITER //
CREATE PROCEDURE process_employees()
BEGIN
-- 声明变量
DECLARE v_name VARCHAR(255);
DECLARE v_salary DECIMAL(10, 2);
-- 声明游标
DECLARE emp_cursor CURSOR FOR SELECT name, salary FROM employees;
-- 声明结束标志
DECLARE done INT DEFAULT FALSE;
-- 当游标遍历结束时设置标志
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
-- 打开游标
OPEN emp_cursor;
-- 循环获取数据
read_loop: LOOP
-- 获取数据
FETCH emp_cursor INTO v_name, v_salary;
-- 如果遍历结束,退出循环
IF done THEN
LEAVE read_loop;
END IF;
-- 输出员工姓名和工资
SELECT CONCAT('Name: ', v_name, ', Salary: ', v_salary);
END LOOP;
-- 关闭游标
CLOSE emp_cursor;
END //
DELIMITER ;
-- 调用存储过程
CALL process_employees();