2015-12-18 2 views
0

Я пытаюсь сделать цикл в MySQL, но он всегда показывает мне ошибку.Петля в phpmyadmin не работает

Правильно ли это код или я допустил ошибку?

DROP PROCEDURE IF EXISTS proc_loop_test; 
CREATE PROCEDURE proc_loop_test() 
BEGIN 
    DECLARE int_val INT DEFAULT 0; 
    test_loop : LOOP 
     IF (int_val = 10) THEN 
      LEAVE test_loop; 
     END IF; 
     SET int_val = int_val +1; 
     SELECT int_val; 
    END LOOP; 
END; 

# 1064 - У Вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, которое соответствует версии сервера MySQL для корректного синтаксиса использовать вблизи «» в строке 3

+1

пожалуйста ссылочку те, которые помогут вам, нажав на галочку рядом с их ответом. –

+0

добавить разделитель с командой DELIMITER –

ответ

2

Проблема заключается в том, что разделитель по умолчанию ; и останавливает выполнение/парсинг кода процедуры. Изменить разделитель перед тем, как создать процедуру и установить его обратно в ; после кода процедуры, как это:

DROP PROCEDURE IF EXISTS proc_loop_test; 

DELIMITER # 

CREATE PROCEDURE proc_loop_test() 
BEGIN 
    ... 
END # 

DELIMITER ; 
+0

По-прежнему такая же ошибка: # 1064 - У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «DELIMITER» по строке 12 Код: 'ПРОЦЕДУРА ДРОПА, ЕСЛИ СУЩЕСТВУЕТ proc_loop_test; DELIMITER # ПРОЦЕДУРА СОЗДАНИЯ proc_loop_test() BEGIN DECLARE int_val INT DEFAULT 0; test_loop: LOOP IF (int_val = 10) THEN LEAVE test_loop; END IF; SET int_val = int_val +1; SELECT int_val; END LOOP; END # DELIMITER; ' –

+0

Я попытался выполнить ваш код, и он работает для меня. Я должен вас разочаровать, что у меня нет ответа на ваше сообщение об ошибке. – sfandler

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