WHILE LOOP У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с '' - PullRequest
0 голосов
/ 20 июня 2019

Вот информация о моем сервере баз данных

Тип сервера: MySQL Версия сервера: 5.7.16 - MySQL Community Server (GPL) Версия протокола: 10

Я запускаю ниже код и получил сообщение об ошибке

CREATE PROCEDURE dowhile()
BEGIN
  DECLARE v1 INT DEFAULT 5;

  WHILE v1 > 0 DO
    SET v1 = v1 - 1;
  END WHILE;
END;

I got an error messate: #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 '' at line 3

Ответы [ 3 ]

1 голос
/ 20 июня 2019

Попробуйте это:

DELIMITER $

CREATE PROCEDURE dowhile()

BEGIN
  DECLARE v1 INT DEFAULT 5;

  WHILE v1 > 0 DO
    SET v1 = v1 - 1;
  END WHILE;
END;

DELIMITER ;

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

1 голос
/ 20 июня 2019

Вам необходимо временно изменить разделитель (потому что процедура содержит разделитель;), а также конец процедуры с временным разделителем. После сборки процедуры вам нужно изменить разделитель на; ПОПРОБУЙТЕ НИЖЕ КОД ЧЕРЕЗ MYSQL COMMAND LINE

DELIMITER $$
DROP PROCEDURE IF EXISTS dowhile$$
CREATE PROCEDURE dowhile()
BEGIN
DECLARE v1 INT DEFAULT 5;
WHILE v1 > 0 DO
SET v1 = v1 - 1;
END WHILE;
END$$
DELIMITER ;

После этого вы вызываете процедуру, используя

call dowhile();
0 голосов
/ 20 июня 2019
DELIMITER //

CREATE PROCEDURE dowhile()
BEGIN
  DECLARE v1 INT DEFAULT 5;

  WHILE v1 > 0 DO
    SET v1 = v1 - 1;
  END WHILE;
END
//

DELIMITER ;
...