0

这里是。它应该循环 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
4

1 回答 1

1

以我的经验,如果有一个SELECT没有返回结果的语句,或者FETCH当然是这样,一个循环就会被打破。不可能从您的代码中说出来,因为您没有显示代码AlbumMoverGenreAlmbumMoverProducer但我会检查这两个过程中是否是这种情况。

只需查看您的代码,任何一个子过程都会出现问题。

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

于 2013-10-17T20:50:00.090 回答