Mysql while 循环不工作(返回 1064)

Mysql while loop is not working (Returning a 1064)

我正在尝试对数据库进行多次插入。我需要使用一个循环,因为在 Node.js 中,我正在定义我应该添加多少行。因此,我不能在 Insert Into.

上使用 Values(...), (...) 语法

但是,当我使用此循环时,出现错误 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;

我收到的错误是:

Error Code: 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 'DELIMITER' at line 1

尝试调整为分隔符 [;;],如下所示。 如果它不起作用,请尝试分隔符 [$$].

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;

如果它仍然不起作用,我建议您将 PROCEDURE 精简到最少的代码,以确保它实际上是导致问题的根本原因的定界符,例如:

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

此外,如果您希望存储过程真正执行,则需要使用命令 [CALL] 调用它。请注意,调用应在 PROCEDURE 之外完成。只有这样你才会看到要执行的查询,因此更改在你的数据库中可见。