我只想使用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