Отключить эффект оператора EXECUTE для CONTINUE HANDLER (mysql 5.5)
У меня есть SQL-код на MySQL:
DELIMITER //
CREATE PROCEDURE proc()
main_block: BEGIN
DECLARE is_finished BOOLEAN DEFAULT FALSE;
DECLARE row_name VARCHAR(50) DEFAULT FALSE;
DECLARE row_id INT DEFAULT FALSE;
DECLARE cur CURSOR FOR SELECT `ID`, `Name` FROM `mytable`;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET is_finished = TRUE;
OPEN cur;
my_loop: REPEAT
FETCH cur INTO row_id, row_name;
IF row_id IS NULL THEN
LEAVE main_block;
END IF;
SET @query = concat('SELECT `ID` INTO @msg_id from ', row_name, '_msgs');
PREPARE run_query FROM @query;
EXECUTE run_query;
DEALLOCATE PREPARE run_query;
...
UNTIL is_finished
END REPEAT my_loop;
CLOSE cur;
END;
END //
mytable
содержит три строки, так что повторять до должен работать три раунда, но после EXECUTE run_query; DEALLOCATE PREPARE run_query;
is_finished
получает TRUE
и цикл заканчивается после окончания первого раунда.
Как я могу отключить эффект EXECUTE
на is_finished
переменная?