谁能看到我为什么会得到:

[Err] 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 11


对于以下代码段:

DELIMITER //

DROP PROCEDURE
IF EXISTS nested_test//
CREATE PROCEDURE nested_test()
BEGIN
    DECLARE a INT;
    SET a = 1;
    SELECT a;
    BEGIN
        DECLARE b INT;
        SET b = 2;
        SELECT b;
    END;
END//

DELIMITER;


这是我实际上在写的简化版本,它提出了完全相同的错误。在添加嵌套的BEGIN END块之前,一切都很好。它在phpMyAdmin上运行良好,但在Navicat 9上运行失败

最佳答案

DELIMITER后应有一个空格。

DELIMITER ;


像那样。



DELIMITER //

DROP PROCEDURE
IF EXISTS nested_test//
CREATE PROCEDURE nested_test()
BEGIN
    DECLARE a INT;
    SET a = 1;
    SELECT a;
    BEGIN
        DECLARE b INT;
        SET b = 2;
        SELECT b;
     END;
END //

DELIMITER ;


执行后,它将生成:


  受影响0行,找到0行。 2个查询的持续时间:0.000秒。

关于mysql - MySQL嵌套块错误1064,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15583332/

10-12 06:24