2017-04-20 1 views
0

Ich schreibe eine gespeicherte Prozedur in phpmyadmin, aber ich bekomme einen Syntaxfehler in der Nähe von Update Anweisung. Aber wenn ich meine update-Anweisung in meine if-Anweisung setze, dann wurden alle Fehler behoben.MySQL: Stored Procedure Syntax Fehler

Q: Warum Update-Anweisung außerhalb verursacht einen Fehler?

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; 

Der Fehler ist wie folgt:

# 1064 - Sie haben einen Fehler in Ihrer SQL-Syntax; Sie in der Bedienungsanleitung zu Ihrem MariaDB Server-Version für den richtigen Syntax entspricht in der Nähe von 'UPDATE tbl_people SET Name = p_name, MOBILE_NUMBER = p_Mobile_Number Wher' in Zeile 5

Antwort

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 ; 

oben Code versuchen.

Hoffe, das wird Ihnen helfen.

1

Sie haben vergessen zu verwenden, neu definieren Begrenzer, versuchen Sie dies:

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 ; 
Verwandte Themen