繁体   English   中英

SQL Server语法错误消息:156,级别:15,状态:1

[英]SQL Server syntax error Msg:156, Level:15, State:1

我正在尝试更改以下存储过程,但是在尝试更改存储过程时遇到语法错误。

消息156,第15级,状态1
关键字“ ELSE”附近的语法错误。 (第24行)

最初,我执行的InsLoginAttempts错误,但是我纠正了该错误。

Microsoft语言参考似乎没有任何帮助https://msdn.microsoft.com/zh-cn/library/ms182717.aspx

SET ANSI_NULLS ON
GO
SET ANSI_NULLS ON
GO

ALTER PROCEDURE dbo.LogInUser
    (@UserID varchar(50),
     @Password varchar(15)
    )
AS
BEGIN
    SET NOCOUNT ON

    DECLARE @UserExists varchar(50)
    SET @UserExists = (SELECT UserID FROM Users WHERE UserID = @UserID)

    DECLARE @CheckPassword varchar(15)
    SET @CheckPassword = (SELECT Password FROM Users WHERE UserID = @UserID)

BEGIN
    IF @UserExists IS NOT NULL
    BEGIN
        IF @Password = @CheckPassword
            SELECT 'True' AS LoggedIn;

        EXEC InsLoginAttempts @SPUserID = @UserID, @SPPassword = @Password, @Comment = 'Success';

        ELSE
            SELECT 'False' AS LoggedIn;

        EXEC InsLoginAttempts @SPUserID = @UserID, @SPPassword = @Password, @Comment = 'Failed password attempt';
    END
    ELSE 
        SELECT 'False' AS LoggedIn;

    EXEC InsLoginAttempts @SPUserID = @UserID, @SPPassword = @Password, @Comment = 'Failed username and password attempt';
    END
END
GO

显然这是语法错误,但是在哪里呢?

编辑:另外,我不知道是否值得注意,但是我还在使用一个名为SQLPro的SQL Server客户端。

您的脚本缺少BEGIN和END

SET ANSI_NULLS ON
GO
SET ANSI_NULLS ON
GO
ALTER PROCEDURE dbo.LogInUser(
    @UserID varchar(50),
    @Password varchar(15)
 )
AS
BEGIN
SET NOCOUNT ON

DECLARE @UserExists varchar(50)
SET @UserExists = (SELECT UserID FROM Users WHERE UserID = @UserID)

DECLARE @CheckPassword varchar(15)
SET @CheckPassword = (SELECT Password FROM Users WHERE UserID = @UserID)

BEGIN
    IF @UserExists IS NOT NULL
        BEGIN

            IF @Password = @CheckPassword
            BEGIN
                SELECT 'True' AS LoggedIn;
                EXEC InsLoginAttempts @SPUserID = @UserID, @SPPassword = @Password, @Comment = 'Success';
            END
            ELSE
            BEGIN
                SELECT 'False' AS LoggedIn;
                EXEC InsLoginAttempts @SPUserID = @UserID, @SPPassword = @Password, @Comment = 'Failed password attempt';
            END
        END
    ELSE 
    BEGIN
        SELECT 'False' AS LoggedIn;
        EXEC InsLoginAttempts @SPUserID = @UserID, @SPPassword = @Password, @Comment = 'Failed username and password attempt';
    END

GO

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM