繁体   English   中英

在存储过程中使用IF条件的UPDATE的MySQL语法?

[英]MySQL syntax for UPDATE with an IF conditional in a stored procedure?

我正在尝试运行存储过程但由于IF条件而失败。我尝试过不同的方法仍然没有成功。 任何人都可以让我知道,如何在存储过程中使用IF条件。

DELIMITER $$

USE `testdb`$$

DROP PROCEDURE IF EXISTS `change_parent`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `change_parent`(
    IN new_parent BIGINT(20),
    IN folder__id BIGINT(20)
)
BEGIN
    SELECT 
        directory_path,nav_depth,id
    INTO 
        @dirpath,@depth,@parent
    FROM folders 
    WHERE id = new_parent;
    UPDATE folders


        IF (folder__id != @parent) THEN 
        SET     directory_path = CONCAT(@dirpath,'/',title),
            nav_depth = @depth+1,
            parent__id = @parent
        END IF;
    WHERE id = folder__id;

END$$

DELIMITER ;

这是错误消息

错误代码:1064您的SQL语法有错误; 检查与您的MySQL服务器版本对应的手册,以便在附近使用正确的语法: 'IF folder__id != @parent THEN SET directory_path = CONCAT(@dirpath,'/',title' at line 13

IF (folder__id != @parent) THEN
    UPDATE folders
            SET ...
        WHERE id = folder__id;
END IF;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM