MySQL存儲過程是一段預(yù)先編寫好的 SQL 代碼,可用于執(zhí)行一系列操作,其返回結(jié)果可以是單個值、單行記錄,甚至是多行記錄。通常情況下,存儲過程返回多行記錄時會用到游標(biāo)技術(shù)。
在MySQL存儲過程中,使用游標(biāo)可以迭代訪問查詢結(jié)果集并從中獲取多個行數(shù)據(jù),從而實現(xiàn)返回多行記錄。下面是一段使用游標(biāo)返回多行記錄的示例代碼:
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' 的游標(biāo)來獲取 employees 表中的所有記錄。游標(biāo)被打開后,通過循環(huán)迭代查詢結(jié)果集,并將其存儲到變量中。查詢結(jié)果最后被格式化并存儲在輸入輸出變量 'details' 中返回,返回值為多行記錄。