MySQL嵌套块错误1064

时间:2013-03-23 04:25:47

标签: mysql delimiter

任何人都可以理解为什么我会得到:

[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上失败了

1 个答案:

答案 0 :(得分:0)

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秒