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及其存储过程(例程)的编写。谁能指出我犯的导致以下错误的错误是什么?提前谢谢你们:)

1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法使用

@ErrorCode在第 15 行的“BEGIN SET = 0”附近

4

1 回答 1

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 语法手册页

于 2016-06-26T04:11:23.530 回答