MySQL объявление переменной, вызывающей синтаксическую ошибку

0

После запуска этого фрагмента кода я столкнулся с следующей ошибкой. Заранее спасибо.

DELIMITER //
BEGIN

DECLARE x INT DEFAULT 0;

DECLARE p1 INT DEFAULT 12;

REPEAT SET x = x + 1; UNTIL x > p1 END REPEAT;

END//

DELIMITER;

Производит синтаксическую ошибку:

# 1064 - У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для> правильного синтаксиса для использования рядом с 'DECLARE x int default 0;

Теги:

2 ответа

0

Вам необходимо временно изменить разделитель, чтобы клиент MySQL не думал, что вы закончили с вашим выражением, когда он видит точку с запятой в строке 3.

DELIMITER //
 BEGIN  
     DECLARE x INT DEFAULT 0;  
     DECLARE p1 INT DEFAULT 12;  
     REPEAT SET x = x + 1; UNTIL x > p1 END REPEAT;  
 END// 
DELIMITER ;

Над кодом должен работать должным образом.

  • 0
    Нет, это не работает, это тот же код, который я разместил.
  • 0
    Вы уверены, что запускаете его как целый блок? , Я выполнил ваш код, но перевод строки перед DELIMITER ; произвел ошибку, которую вы упомянули. Проблема в том, что он не выполняет DELIMITER; с этим.
Показать ещё 1 комментарий
0

Пытаться:

DELIMITER //

DROP PROCEDURE IF EXISTS 'sp_test';

CREATE PROCEDURE 'sp_test'()
BEGIN
  DECLARE 'x' INT DEFAULT 0;
  DECLARE 'p1' INT DEFAULT 12;
  REPEAT
    SET 'x' := 'x' + 1;
  UNTIL 'x' > 'p1' END REPEAT;
  SELECT 'x';
END//

DELIMITER ;

CALL 'sp_test';
  • 0
    Но я пытаюсь запустить этот код без использования процедуры.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню