当前位置:  开发笔记 > 后端 > 正文

在MySQL中创建存储过程时出现SQL语法错误

如何解决《在MySQL中创建存储过程时出现SQL语法错误》经验,为你挑选了1个好方法。

尝试在mysql中创建存储过程时,我很难找到错误.

如果我独立运行程序的每一行,一切正常.

CREATE PROCEDURE cms_proc_add_child 
(
    param_parent_id INT, param_name CHAR(255),
    param_content_type CHAR(255)
)
BEGIN
    SELECT @child_left := rgt FROM cms_tree WHERE id = param_parent_id;
    UPDATE cms_tree SET rgt = rgt+2 WHERE rgt >= @child_left;
    UPDATE cms_tree SET lft = lft+2 WHERE lft >= @child_left;
    INSERT INTO cms_tree (name, lft, rgt, content_type) VALUES 
    (
        param_name,
        @child_left,
        @child_left+1,
        param_content_type
    );
END

我得到以下(有用)错误:

错误1064(42000):您的SQL语法有错误; 检查与MySQL服务器版本对应的手册,以便在第3行的"'附近使用正确的语法

我只是不知道从哪里开始调试,因为这些行中的每一行都是正确的.

你有什么建议吗?



1> Uwe Mesecke..:

由于第3行包含第一行;,您的分隔符可能存在问题.

请参阅http://dev.mysql.com/doc/refman/5.0/en/stored-programs-defining.html

DELIMITER //
CREATE PROCEDURE dorepeat(p1 INT)
BEGIN
    SET @x = 0;
    REPEAT SET @x = @x + 1; UNTIL @x > p1 END REPEAT;
END//
DELIMITER ;

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有