我有这个存储过程:
DELIMITER //
DROP PROCEDURE IF EXISTS cursor_example//
CREATE PROCEDURE cursor_example()
BEGIN
DECLARE niche_id INT;
DECLARE niche_name VARCHAR(100);
DECLARE curl CURSOR FOR SELECT * FROM `niche`;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
OPEN curl;
my_loop:LOOP
FETCH curl INTO niche_id, niche_name;
IF done=1 THEN
LEAVE my_loop;
END IF;
END LOOP my_loop;
CLOSE curl;
END//
DELIMITER ;
问题是,在光标完成迭代后,如何从光标中取出niche id和niche_name行。我不能从存储过程中得到一个结果集作为变量,不能吗?那么使用游标存储过程主要是出于内部目的吗?
答案 0 :(得分:0)
如果结果是 - '标量值',那么您可以使用以下变体之一:
SELECT niche_id, niche_name;
。如果结果是一组值,那么您应该填充另一个表,例如临时表。
此外,如果您想从表中读取一些数据并将其存储到另一个表中,请尝试使用INSERT ... SELECT语句而不是打开游标。