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