任何人都可以理解为什么我会得到:
[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上失败了
答案 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秒