在这里。它应循环120,000次,但它只会循环两次。手动运行时SELECT DISTINCT barcode FROM albumitemdetails_custom;
返回120,000行。我的代码出了什么问题?
DELIMITER $$
CREATE DEFINER=`testuser`@`%` PROCEDURE `AlbumMover`()
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE barcode varchar(100);
DECLARE cur1 CURSOR FOR SELECT DISTINCT barcode FROM albumitemdetails_custom;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN cur1;
REPEAT
FETCH cur1 INTO barcode;
CALL AlbumMoverGenre(barcode);
CALL AlbumMoverProducer(barcode);
UNTIL done END REPEAT;
CLOSE cur1;
END
答案 0 :(得分:1)
根据我的经验,如果有SELECT
语句没有返回结果,或者FETCH
当然,则循环会被破坏。由于您没有显示AlbumMoverGenre
和AlmbumMoverProducer
的代码,因此无法从您的代码中说出来,但我会检查这两种方法中是否都是这种情况。
只是查看你的代码,在任何一个子程序中都会出错。
当它在第二次迭代时中断时,我将获得您的不同条形码查询的结果集并运行具有该值的子过程,并查看结果是什么。