在MySQL存储过程中,使用游标可以迭代访问查询结果集并从中获取多个行数据,从而实现返回多行记录。下面是一段使用游标返回多行记录的示例代码:
DELIMITER // CREATE PROCEDURE get_employee_details(INOUT details VARCHAR(100)) BEGIN DECLARE emp_id INT DEFAULT 0; DECLARE emp_name VARCHAR(255); DECLARE emp_salary FLOAT; DECLARE cur_emp CURSOR FOR SELECT id, name, salary FROM employees; DECLARE CONTINUE HANDLER FOR NOT FOUND SET details = 'No Records Found'; OPEN cur_emp; SET details = ''; emp_loop: LOOP FETCH cur_emp INTO emp_id, emp_name, emp_salary; IF details = '' THEN SET details = CONCAT('ID\tName\tSalary\n'); END IF; IF emp_id IS NULL THEN LEAVE emp_loop; END IF; SET details = CONCAT(details, emp_id, '\t', emp_name, '\t', emp_salary, '\n'); END LOOP; CLOSE cur_emp; END; // DELIMITER ;
在上述存储过程中,使用了一个名为 ‘cur_emp’ 的游标来获取 employees 表中的所有记录。游标被打开后,通过循环迭代查询结果集,并将其存储到变量中。查询结果最后被格式化并存储在输入输出变量 ‘details’ 中返回,返回值为多行记录。