Mysql, хотя цикл не работает (возвращая 1064) - PullRequest
2 голосов
/ 06 июня 2019

Я пытаюсь сделать несколько вставок в базу данных.Мне нужно использовать цикл, потому что в Node.js я определяю, сколько строк мне нужно добавить.Поэтому я не могу использовать синтаксис Values(...), (...) для Insert Into.

. Однако при использовании этого цикла я получаю ошибку 1064. Что я могу сделать?

DELIMITER //
DROP PROCEDURE IF EXISTS addReservations;
CREATE PROCEDURE addReservations()

BEGIN
  DECLARE v1 INT DEFAULT 0;
  WHILE v1 < 5 DO
    INSERT INTO `Reservations` (`Timeslot_idTimeslot`, `Exam_type_idExam_type`, `Temp_Student_idStudent`, `Lock_expiration_date`)
    VALUES (1, 1, 1, '2019-07-02 00:00:00');
    SET v1 = v1 + 1;
  END WHILE;
END;
DELIMITER;

Я получаю ошибку:

Код ошибки: 1064 В синтаксисе SQL есть ошибка;проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с «DELIMITER» в строке 1

1 Ответ

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

Попробуйте настроить разделитель [;;], как показано ниже.Если это не работает, попробуйте разделитель [$$].

DROP PROCEDURE IF EXISTS addReservations;
DELIMITER ;;
CREATE PROCEDURE addReservations()
BEGIN
  DECLARE v1 INT DEFAULT 0;
  WHILE v1 < 5 DO
    INSERT INTO `Reservations` (`Timeslot_idTimeslot`, `Exam_type_idExam_type`,    `Temp_Student_idStudent`, `Lock_expiration_date`)
    VALUES (1, 1, 1, '2019-07-02 00:00:00');
    SET v1 = v1 + 1;
  END WHILE;
END;;
DELIMITER;

Если он все еще не работает, я предлагаю вам сократить вашу ПРОЦЕДУРУ до минимума кода, чтобы убедиться, что он на самом делеразделитель, который является основной причиной вашей проблемы, например:

DROP PROCEDURE IF EXISTS addReservations;
DELIMITER ;;
CREATE PROCEDURE addReservations()
BEGIN
  SELECT * FROM ["comment: add your table name here"];
END
;;
DELIMITER ;

Далее, если вы ожидаете, что ваша хранимая процедура действительно будет выполняться, вам нужно вызвать ее, используя команду [CALL].Обратите внимание, что вызов должен быть сделан за пределами ПРОЦЕДУРЫ.Только тогда вы увидите запрос, который будет выполнен, и, следовательно, изменения будут видны в вашей базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...