MySQL 游标无法获取数据

标签 mysql function stored-procedures cursor

我使用了 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/

相关文章:

php - 将 Mysql 查询转换为 Laravel 4 Eloquent

mysql - 删除大量mysql数据库中xsecound时间不同的重复项

mysql - 使用 where 和Where IN 连接多个表

c++ - 如何使用函数区分名称之间的分数

c - 将指针的二维数组传递给函数 C 的不同方法

c - 函数中的参数

sql-server - 使用 INNER JOIN 的 SQL Server 存储过程

c# - 如何跟踪表行之间的 ID/ParentID 关系?

mysql - 如何从mysql中的列中选择多条记录(行)?

php - 无法使用登录功能