简体   繁体   English

MySQL:存储过程语法错误

[英]MySQL: Stored Procedure Syntax Error

I am writing a stored procedure in phpmyadmin but I am getting a syntax error near Update statement. 我在phpmyadmin中编写存储过程,但在Update语句附近收到语法错误。 But if I put my update statement inside my if statement than all errors been resolved. 但是,如果我将更新语句放入if语句中,则所有错误均已解决。

Q: Why update statement outside causes an error? 问:为什么外部更新语句会导致错误?

CREATE DEFINER=`root`@`localhost` PROCEDURE `tbl_people_update`(IN `p_Id` INT, IN `p_Name` VARCHAR(150), IN `p_Mobile_Number` VARCHAR(100))
    IF CHAR_LENGTH(p_Mobile_Number) <= 0 THEN
     SET p_Mobile_Number = '12345';
    END IF;

    UPDATE tbl_people
     SET 
     Name=p_Name,
     Mobile_Number = p_Mobile_Number
     WHERE
     Id=p_Id;

The error is as follows: 错误如下:

#1064 - You have an error in your SQL syntax; #1064-您的SQL语法有误; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UPDATE tbl_people SET Name=p_Name, Mobile_Number = p_Mobile_Number WHER' at line 5 检查与您的MariaDB服务器版本相对应的手册,以在第5行的'UPDATE tbl_people SET Name = p_Name,Mobile_Number = p_Mobile_Number WHER'附近使用正确的语法

You've forgotten re-define delimiter, try this: 您忘记了重新定义定界符,请尝试以下操作:

delimiter ||
CREATE DEFINER=`root`@`localhost` PROCEDURE `tbl_people_update`(IN `p_Id` INT, IN `p_Name` VARCHAR(150), IN `p_Mobile_Number` VARCHAR(100))
    IF CHAR_LENGTH(p_Mobile_Number) <= 0 THEN
     SET p_Mobile_Number = '12345';
    END IF;

    UPDATE tbl_people
     SET 
     Name=p_Name,
     Mobile_Number = p_Mobile_Number
     WHERE
     Id=p_Id;
||
delimiter ;
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `tbl_people_update`(IN `p_Id` INT, IN `p_Name` VARCHAR(150), IN `p_Mobile_Number` VARCHAR(100))
BEGIN
     IF CHAR_LENGTH(p_Mobile_Number) <= 0 THEN
     SET p_Mobile_Number = '12345';
    END IF;
    UPDATE tbl_people
     SET 
     Name=p_Name,
     Mobile_Number = p_Mobile_Number
     WHERE
     Id=p_Id;
END$$
DELIMITER ;

Try above code. 尝试上面的代码。

Hope this will helps you. 希望这对您有帮助。

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

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