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

标签 mysql

我正在尝试运行一个存储过程,但由于 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 ;

这是错误信息

Error Code: 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: '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;

关于在存储过程中使用 IF 条件更新的 MySQL 语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30003685/

相关文章:

php - SQL命令从数据ID在两个表中的表中删除

mysql - 创建 MySQL 函数时出错 (1064)

php - 如何将一个查询结果减去mysql中的另一个查询

php - 如何通过PHP检查MySQL中没有空格的字符串

php - 使用ajax将下拉选项选择的值从index.php页面发送到codeigniter中的search.php

c# - 将行尾保存到数据库

旧 mysql 版本的 mysqldump

mysql - 交易问题

mysql - 如何根据其他表中的列检索行

PHP 从表中获取变量,然后使用该变量从第二个表中进行选择