gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 02:39:09 24 4
gpt4 key购买 nike

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

关于Mysql while 循环不工作(返回 1064),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56474919/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com