2017-04-20 22 views
0

私はphpmyadminでストアドプロシージャを作成していますが、Updateステートメントの近くに構文エラーが表示されています。しかし、すべてのエラーが解決されたよりも私のifステートメントの中に私の更新ステートメントを置くと。MySQL:ストアドプロシージャ構文エラー

Q:外部の更新ステートメントでエラーが発生するのはなぜですか?次のように

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構文でエラーが発生しています。 、ライン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

であなたが再定義の区切り文字を忘れてしまった 近い「SET名= P_NAME、MOBILE_NUMBER = p_Mobile_Number WHER tbl_people UPDATE」を使用する権利構文については、ご使用のMariaDBサーバーのバージョンに対応するマニュアルを確認してくださいこの方法を試してください。

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 ; 
関連する問題