2017-04-20 160 views
0

我在phpmyadmin中編寫存儲過程,但我在Update語句附近收到語法錯誤。但是如果我在我的if語句中放入更新語句,而不是所有錯誤都已解決。MySQL:存儲過程語法錯誤

問:爲什麼update語句會導致錯誤?

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; 

的錯誤如下:

#1064 - 你在你的SQL語法錯誤;檢查對應於您MariaDB的服務器版本正確的語法使用 附近「UPDATE tbl_people集名稱= p_Name,MOBILE_NUMBER = p_Mobile_Number WHER」第5行

回答

1
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 ; 

試試上面的代碼。

希望這會幫助你。

1

你忘了重新定義分隔符的使用說明書,試試這個:

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 ;