2016-06-26 7 views
0
CREATE PROCEDURE `usp_GetUserValidation` 

(IN `@Username` VARCHAR(255), 
IN `@Password` VARCHAR(50), 
OUT `@ErrorCode` INT) 

    LANGUAGE SQL 
    NOT DETERMINISTIC 
    CONTAINS SQL 
    SQL SECURITY DEFINER 
    COMMENT 'To validate user login' 
BEGIN 

    IF EXISTS 
    (SELECT UserID 
     FROM mt_User 
     WHERE Username = `@Username` 
     AND Password = PASSWORD(`@Password`)) 

     BEGIN 
      SET `@ErrorCode` = 0; 
     END 

    ELSE 
     SET `@ErrorCode` = 1; 


    SELECT '@ErrorCode' AS res 
END 

こんにちは。私はSQL Serverユーザーです。最近、私はMySQLとそのストアドプロシージャ(ルーチン)について学び始めました。誰でも次のエラーの原因となっている間違いを指摘できますか?先輩にありがとう:MySQL - ストアドプロシージャの構文の問題

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 'BEGIN SET @ErrorCode = 0' at line 15

+1

MySQLのマニュアルページ。エラーで提案されたマニュアルを参照してください:http://dev.mysql.com/doc/refman/5.7/en/create-procedure.html – Andrew

+0

はい。それはそうだ:)おかげで多くの仲間 – DriLLFreAK100

答えて

1

これはあなたが欲しいものかもしれません。 DELIMITER BLOCK内のすべてのこと、およびIFブロック(いくつかの構文エラーがあった)に対するいくつかの変更。システムに保存されるようになりました。

DELIMITER $$ 
CREATE PROCEDURE `usp_GetUserValidation` 

(IN `@Username` VARCHAR(255), 
IN `@Password` VARCHAR(50), 
OUT `@ErrorCode` INT) 

    LANGUAGE SQL 
    NOT DETERMINISTIC 
    CONTAINS SQL 
    SQL SECURITY DEFINER 
    COMMENT 'To validate user login' 
BEGIN 

    IF EXISTS 
    (SELECT UserID 
     FROM mt_User 
     WHERE Username = `@Username` 
     AND Password = PASSWORD(`@Password`)) THEN 

      SET `@ErrorCode` = 0; 

    ELSE 
     SET `@ErrorCode` = 1; 
    END IF; 


    SELECT '@ErrorCode' AS res; 
END$$ 
DELIMITER ; 

関連:DELIMITERとは何ですか?私はあなただけの「何を設定する」ではない、実際のクエリを必要とするbeginとendの間だと思うIF Syntax