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 之外完成。只有这样你才会看到要执行的查询,因此更改在你的数据库中可见。
我正在尝试对数据库进行多次插入。我需要使用一个循环,因为在 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 之外完成。只有这样你才会看到要执行的查询,因此更改在你的数据库中可见。