为什么我的MySQL存储过程不循环?

时间:2013-10-17 20:32:16

标签: mysql sql stored-procedures

在这里。它应循环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

1 个答案:

答案 0 :(得分:1)

根据我的经验,如果有SELECT语句没有返回结果,或者FETCH当然,则循环会被破坏。由于您没有显示AlbumMoverGenreAlmbumMoverProducer的代码,因此无法从您的代码中说出来,但我会检查这两种方法中是否都是这种情况。

只是查看你的代码,在任何一个子程序中都会出错。

当它在第二次迭代时中断时,我将获得您的不同条形码查询的结果集并运行具有该值的子过程,并查看结果是什么。