2016-06-26 113 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

我想開始和結束,你需要一個實際的查詢,而不僅僅是「設置什麼」之間的手冊。根據以下錯誤中的建議查看手冊: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是什麼交易。

MySQL在IF Syntax