2013-09-03 3 views
0
DECLARE oldID int; 
DECLARE DONE boolean DEFAULT FALSE; 
DECLARE fineCursor CURSOR FOR SELECT `ifLinkID` FROM `image_fine_link` WHERE `image_id` = pimage_id; 
DECLARE coarseCursor CURSOR FOR SELECT `icLinkID` FROM `image_coarse_link` WHERE `image_id` = pimage_id; 
DECLARE CONTINUE HANDLER FOR NOT FOUND SET DONE = TRUE; 


OPEN fineCursor; 
OPEN coarseCursor; 

read_loop : LOOP 
    oldID = NULL; 
    FETCH fineCursor INTO oldID; 
    IF oldID IS NOT NULL THEN 
    CALL update_others(oldID,"delete","fine color",NULL); 
    END IF; 

    IF !DONE THEN ITERATE read_loop; 
    END IF; 
    LEAVE read_loop; 
END LOOP; 

SET DONE = FALSE; 

read_lopp : LOOP 
    oldID = NULL; 
    FETCH coarseCursor INTO oldID; 
    IF oldID IS NOT NULL THEN 
    CALL update_others(oldID,"delete","coarse color",NULL); 
    END IF; 

    IF !DONE THEN ITERATE read_loop; 
    END IF; 
    LEAVE read_loop; 
END LOOP; 

CLOSE fineCursor; 
CLOSE coarseCursor; 

И появляется следующая ошибка, действительно возникающая, любая идея?Ошибка хранимой процедуры Mysql - LOOP и CURSOR

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= NULL; 
    FETCH fineCursor INTO oldID; 
    IF oldID IS NOT NULL THEN 
    CALL upd' at line 16 

Спасибо так много искренне! ~

ответ

0

Эта конкретная ошибка вызвана тем, что вы не использовали SET заявление, чтобы присвоить значение переменной.

Изменить

oldID = NULL; 

в

SET oldID = NULL; 
+0

Ах да ... как неосторожно я ... спасибо так много :) – user2741837

+0

@ user2741837 Добро пожаловать :) Если бы это было то, что вы искали, пожалуйста, рассмотрите ** [accept] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) ** ответ. – peterm

+0

Привет, действительно, есть еще одна проблема с этим кодом: отчеты об ошибках: # 1308 - ITERATE без соответствующей метки: read_loop, я думаю, это потому, что область ярлыка не видна в цикле, что я должен делать вместо этого, так как Мне всегда нужно условие суждения, чтобы оставить или повторить цикл? :) Оцените это, если вы можете помочь – user2741837

Смежные вопросы