我只想使用CURSOR过程返回多行。但是它返回空值。我已经使用了一个简单的select查询来进行测试。

   CREATE DEFINER=`root`@`localhost` PROCEDURE `get_user`()
        READS SQL DATA
    BEGIN
        DECLARE id INT;
        DECLARE name VARCHAR (256);

        DECLARE done int default 0;

        DECLARE curl CURSOR FOR

        SELECT id, name FROM user;

        DECLARE CONTINUE HANDLER FOR NOT FOUND SET DONE = 1;

        OPEN curl;
            data_loop:LOOP
                FETCH curl INTO id, name;
                IF done=1 THEN
                    leave data_loop;
                END IF;
            END LOOP data_loop;
        CLOSE curl;
    END

最佳答案

一个过程必须用SELECT终止(大约多行)。

但我无法显示您的最终SELECT。

例如,您可以将临时表USERS2(CREATE TEMPORARY TABLE users2)与USER表的相同字段一起使用。在循环中,您可以编写USERS2(INSERT INTO users2 ... and so on),因此最后您将编写:

SELECT * FROM users2

09-25 21:39