MySQL存储了proc语法错误

时间:2017-09-01 19:50:33

标签: mysql stored-procedures

尝试在mysql中实现一个简单的嵌套循环例程:

BEGIN
   DECLARE days_cnt INT;

    SET days_cnt = 0; # Start today
    WHILE days_cnt < 10 DO

        WHILE 1 DO

        END WHILE;

        SET days_cnt = days_cnt + 1;
    END WHILE;

END

这是关于'END WHILE;'

附近的语法错误的一般性1064错误

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您可能需要在存储的程序中重新定义分隔符(分号)。根据{{​​3}}

  

如果使用mysql客户端程序定义包含分号字符的存储程序,则会出现问题。默认情况下,mysql本身将分号识别为语句分隔符,因此必须临时重新定义分隔符以使mysql将整个存储的程序定义传递给服务器。

因此,在CREATE PROCEDURE语句之前添加以下内容(可以是除分号以外的任何字符):delimiter $$

然后在CREATE PROCEDURE结束后重置:delimiter ;

否则,我不确定MySQL如何处理您在外部WHILE循环中嵌套的空WHILE 1 DO END循环语句(WHILE部分) 。您可能希望删除该内容循环中所需的内容或处理它。

答案 1 :(得分:0)

此循环必须在其中包含一个语句:

WHILE 1 DO

END WHILE;