存储过程没有 return 多行
Store procedure doesn't return mutiple rows
我只想使用 CURSOR
过程 return 多行。但它 return 空值。我使用了一个简单的 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。
例如,您可以使用具有与 USER table 相同字段的临时 table USERS2 (CREATE TEMPORARY TABLE users2
)。在循环中你可以写USERS2(INSERT INTO users2 ... and so on
),所以最后你会写:
SELECT * FROM users2
我只想使用 CURSOR
过程 return 多行。但它 return 空值。我使用了一个简单的 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。
例如,您可以使用具有与 USER table 相同字段的临时 table USERS2 (CREATE TEMPORARY TABLE users2
)。在循环中你可以写USERS2(INSERT INTO users2 ... and so on
),所以最后你会写:
SELECT * FROM users2