2013-10-17 1 views
0

여기 있습니다. 120,000 번 반복되지만 두 번만 반복됩니다. SELECT DISTINCT barcode FROM albumitemdetails_custom;은 수동으로 실행할 때 120,000 개의 행을 반환합니다. 내 코드에 어떤 문제가 있습니까? 어떤 결과 또는 과정의 FETCH을 반환하지 않는 SELECT 문이있는 경우 내 경험에왜 MySQL 스토어 프로 시저가 루프되지 않습니까?

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

루프가 파손됩니다. AlbumMoverGenreAlmbumMoverProducer에 대한 코드를 표시하지 않기 때문에 코드에서 말할 수는 없지만 두 절차 중 어느 경우에 해당하는지 확인합니다.

코드를 살펴보면 하위 프로 시저 중 하나에서 문제가 발생합니다.

두 번째 반복에서 깨지기 때문에 고유 한 바코드 쿼리의 결과를 얻고 해당 값을 사용하여 하위 프로 시저를 실행하고 결과가 무엇인지 확인하십시오.

+0

잠수함을 꺼내어 기본 로깅을 사용하는 경우에도 두 번만 반복됩니다. 다른 전화가 아닙니다. –

+0

결과 세트에 두 번째 바코드가있는 다른 두 개의 서브를 실행하려 했습니까? –

관련 문제