我使用了 http://www.mysqltutorial.org/mysql-cursor/ 中的以下示例连接查询结果并将其作为字符串返回到 mysql 数据库中。
当我在过程之外执行查询时,它会返回电子邮件结果列表。但是当我在过程或函数中使用游标执行相同的查询时,结果为空。
有什么区别?
CREATE PROCEDURE build_email_list (INOUT email_list varchar(4000))
BEGIN
DECLARE v_finished INTEGER DEFAULT 0;
DECLARE v_email varchar(100) DEFAULT "";
-- declare cursor for employee email
DEClARE email_cursor CURSOR FOR
SELECT email FROM employees;
-- declare NOT FOUND handler
DECLARE CONTINUE HANDLER
FOR NOT FOUND SET v_finished = 1;
OPEN email_cursor;
get_email: LOOP
FETCH email_cursor INTO v_email;
IF v_finished = 1 THEN
LEAVE get_email;
END IF;
-- build email list
SET email_list = CONCAT(v_email,";",email_list);
END LOOP get_email;
CLOSE email_cursor;
END
最佳答案
您可以使用一个查询来完成此操作:
SELECT GROUP_CONCAT(email SEPARATOR ';') AS email_list FROM employees;
关于MySQL 游标无法获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21848867/