Sql server SQL Server 2008中返回空值的登录存储过程

Sql server SQL Server 2008中返回空值的登录存储过程,sql-server,stored-procedures,Sql Server,Stored Procedures,我创建了一个存储过程来检查登录凭据并相应地返回一个值。但是我得到了一个空的返回值 这是我的存储过程: ALTER procedure [dbo].[Proc_CheckUser] @UserID VARCHAR(50), @Password VARCHAR(50) AS SET NOCOUNT ON DECLARE @ReturnVal VARCHAR(500) DECLARE @PasswordOld VARCHAR(50) DECLARE

我创建了一个存储过程来检查登录凭据并相应地返回一个值。但是我得到了一个空的返回值

这是我的存储过程:

ALTER procedure [dbo].[Proc_CheckUser]
    @UserID   VARCHAR(50),
    @Password VARCHAR(50)
AS
    SET NOCOUNT ON

    DECLARE @ReturnVal VARCHAR(500)
    DECLARE @PasswordOld VARCHAR(50)
    DECLARE @Type VARCHAR(50)
    DECLARE @IP  NVARCHAR(50)
    DECLARE @DBPassword NVARCHAR(50)
    SET @DBPassword = Hashbytes('SHA1',@Password)

    SELECT 
       @PasswordOld = Password,
       @Type = ClientType,
       @IP = IPAddress
    FROM   
       Clients
    WHERE  
       username = @userid  
       AND Password = @DBPassword

    IF (@@ROWCOUNT=0)
    BEGIN
        SET @ReturnVal = '1|Incorrect Username'

        INSERT INTO FailedLogins(Username, Password, ClientType, Reason, IPAddress)
        VALUES(@UserID, Hashbytes('SHA1', @Password), @Type, 'Invalid Username', @IP)
    END
    ELSE
    BEGIN
        IF (@PasswordOld <> @DBPassword)
        BEGIN
            SET @ReturnVal = '1|Incorrect Password'

            INSERT INTO FailedLogins(Username, Password, ClientType, Reason, IPAddress)
            VALUES(@UserID, Hashbytes('SHA1', @Password), @Type, 'Invalid Password', @IP)
        END
        ELSE
        BEGIN
            SET @ReturnVal = '0|Logged in successfully' + '|' + rtrim(cast(@Type as char))

            INSERT INTO SuccessfulLogins(Username, Password, ClientType, Reason, IPAddress)
            VALUES(@UserID, Hashbytes('SHA1', @Password), @Type, 'Valid Login Credentials Provided', @IP)
        END 
     END

     SELECT @ReturnVal
ALTER过程[dbo].[Proc\u CheckUser]
@UserID VARCHAR(50),
@密码VARCHAR(50)
作为
不计较
声明@ReturnVal VARCHAR(500)
声明@PasswordOld VARCHAR(50)
声明@Type VARCHAR(50)
声明@IP NVARCHAR(50)
声明@DBPassword NVARCHAR(50)
设置@DBPassword=Hashbytes('SHA1',@Password)
挑选
@PasswordOld=密码,
@Type=ClientType,
@IP=IP地址
从…起
客户
哪里
用户名=@userid
密码=@DBPassword
如果(@@ROWCOUNT=0)
开始
SET@ReturnVal='1 |用户名不正确'
插入失败登录(用户名、密码、客户端类型、原因、IP地址)
值(@UserID,Hashbytes(@SHA1',@Password),@Type,'Invalid Username',@IP)
结束
其他的
开始
IF(@PasswordOld@DBPassword)
开始
SET@ReturnVal='1 |密码不正确'
插入失败登录(用户名、密码、客户端类型、原因、IP地址)
值(@UserID,Hashbytes('SHA1',@Password),@Type,'Invalid Password',@IP)
结束
其他的
开始
SET@ReturnVal='0 |成功登录'+'|'+rtrim(强制转换(@Type as char))
插入成功登录(用户名、密码、客户端类型、原因、IP地址)
值(@UserID,Hashbytes(@SHA1',@Password),@Type,'Valid Login-Credentials-Provided',@IP)
结束
结束
选择@ReturnVal
有人能给我推荐一种更合适的方法来编写存储过程吗


谢谢你

上次忘记
返回
关键字添加
返回
关键字

ALTER procedure [dbo].[Proc_CheckUser]
 @UserID   VARCHAR(50),
 @Password VARCHAR(50)
 AS

    SET NOCOUNT ON

    DECLARE @ReturnVal VARCHAR(500)
    DECLARE @PasswordOld VARCHAR(50)
    DECLARE @Type VARCHAR(50)
    DECLARE @IP  NVARCHAR(50)
    DECLARE @DBPassword NVARCHAR(50)


    SELECT @PasswordOld = Password,@Type=ClientType,@IP=IPAddress
    FROM   Clients
    WHERE  username = @userid and @DBPassword=HashBytes('SHA1',@Password)

    IF @@ROWCOUNT=0
      SET @ReturnVal='1|Incorrect Username'
      INSERT INTO FailedLogins(Username,Password,ClientType,Reason,IPAddress)
      VALUES(@UserID,@DBPassword,@Type,'Invalid Username',@IP)

    IF (@PasswordOld<>@DBPassword)
      BEGIN
      SET @ReturnVal='1|Incorrect Password'
      INSERT INTO FailedLogins(Username,Password,ClientType,Reason,IPAddress)
      VALUES(@UserID,@DBPassword,@Type,'Invalid Password',@IP)
      END

    ELSE
      BEGIN
      SET @ReturnVal='0|Logged in Successfully' +'|'+ rtrim(cast(@Type as char))
      INSERT INTO SuccessfulLogins(Username,Password,ClientType,Reason,IPAddress)
      VALUES(@UserID,@DBPassword,@Type,'Valid Login Credentials Provided',@IP)
      END 


    SELECT @ReturnVal
Return
ALTER过程[dbo].[Proc\u CheckUser]
@UserID VARCHAR(50),
@密码VARCHAR(50)
作为
不计较
声明@ReturnVal VARCHAR(500)
声明@PasswordOld VARCHAR(50)
声明@Type VARCHAR(50)
声明@IP NVARCHAR(50)
声明@DBPassword NVARCHAR(50)
选择@PasswordOld=Password、@Type=ClientType、@IP=IPAddress
来自客户
其中username=@userid和@DBPassword=HashBytes('SHA1',@Password)
如果@@ROWCOUNT=0
设置@ReturnVal='1 |用户名不正确'
插入失败登录(用户名、密码、客户端类型、原因、IP地址)
值(@UserID、@DBPassword、@Type、'Invalid Username'、@IP)
如果(@PasswordOld@DBPassword)
开始
设置@ReturnVal='1 |密码不正确'
插入失败登录(用户名、密码、客户端类型、原因、IP地址)
值(@UserID、@DBPassword、@Type、'Invalid Password'、@IP)
结束
其他的
开始
设置@ReturnVal='0 |成功登录'+'|'+rtrim(强制转换(@Type as char))
插入成功登录(用户名、密码、客户端类型、原因、IP地址)
值(@UserID、@DBPassword、@Type、'Valid Login Credentials Provided'、@IP)
结束
选择@ReturnVal
返回

上次忘记
返回
关键字添加
返回
关键字

ALTER procedure [dbo].[Proc_CheckUser]
 @UserID   VARCHAR(50),
 @Password VARCHAR(50)
 AS

    SET NOCOUNT ON

    DECLARE @ReturnVal VARCHAR(500)
    DECLARE @PasswordOld VARCHAR(50)
    DECLARE @Type VARCHAR(50)
    DECLARE @IP  NVARCHAR(50)
    DECLARE @DBPassword NVARCHAR(50)


    SELECT @PasswordOld = Password,@Type=ClientType,@IP=IPAddress
    FROM   Clients
    WHERE  username = @userid and @DBPassword=HashBytes('SHA1',@Password)

    IF @@ROWCOUNT=0
      SET @ReturnVal='1|Incorrect Username'
      INSERT INTO FailedLogins(Username,Password,ClientType,Reason,IPAddress)
      VALUES(@UserID,@DBPassword,@Type,'Invalid Username',@IP)

    IF (@PasswordOld<>@DBPassword)
      BEGIN
      SET @ReturnVal='1|Incorrect Password'
      INSERT INTO FailedLogins(Username,Password,ClientType,Reason,IPAddress)
      VALUES(@UserID,@DBPassword,@Type,'Invalid Password',@IP)
      END

    ELSE
      BEGIN
      SET @ReturnVal='0|Logged in Successfully' +'|'+ rtrim(cast(@Type as char))
      INSERT INTO SuccessfulLogins(Username,Password,ClientType,Reason,IPAddress)
      VALUES(@UserID,@DBPassword,@Type,'Valid Login Credentials Provided',@IP)
      END 


    SELECT @ReturnVal
Return
ALTER过程[dbo].[Proc\u CheckUser]
@UserID VARCHAR(50),
@密码VARCHAR(50)
作为
不计较
声明@ReturnVal VARCHAR(500)
声明@PasswordOld VARCHAR(50)
声明@Type VARCHAR(50)
声明@IP NVARCHAR(50)
声明@DBPassword NVARCHAR(50)
选择@PasswordOld=Password、@Type=ClientType、@IP=IPAddress
来自客户
其中username=@userid和@DBPassword=HashBytes('SHA1',@Password)
如果@@ROWCOUNT=0
设置@ReturnVal='1 |用户名不正确'
插入失败登录(用户名、密码、客户端类型、原因、IP地址)
值(@UserID、@DBPassword、@Type、'Invalid Username'、@IP)
如果(@PasswordOld@DBPassword)
开始
设置@ReturnVal='1 |密码不正确'
插入失败登录(用户名、密码、客户端类型、原因、IP地址)
值(@UserID、@DBPassword、@Type、'Invalid Password'、@IP)
结束
其他的
开始
设置@ReturnVal='0 |成功登录'+'|'+rtrim(强制转换(@Type as char))
插入成功登录(用户名、密码、客户端类型、原因、IP地址)
值(@UserID、@DBPassword、@Type、'Valid Login Credentials Provided'、@IP)
结束
选择@ReturnVal
返回

上次忘记
返回
关键字添加
返回
关键字

ALTER procedure [dbo].[Proc_CheckUser]
 @UserID   VARCHAR(50),
 @Password VARCHAR(50)
 AS

    SET NOCOUNT ON

    DECLARE @ReturnVal VARCHAR(500)
    DECLARE @PasswordOld VARCHAR(50)
    DECLARE @Type VARCHAR(50)
    DECLARE @IP  NVARCHAR(50)
    DECLARE @DBPassword NVARCHAR(50)


    SELECT @PasswordOld = Password,@Type=ClientType,@IP=IPAddress
    FROM   Clients
    WHERE  username = @userid and @DBPassword=HashBytes('SHA1',@Password)

    IF @@ROWCOUNT=0
      SET @ReturnVal='1|Incorrect Username'
      INSERT INTO FailedLogins(Username,Password,ClientType,Reason,IPAddress)
      VALUES(@UserID,@DBPassword,@Type,'Invalid Username',@IP)

    IF (@PasswordOld<>@DBPassword)
      BEGIN
      SET @ReturnVal='1|Incorrect Password'
      INSERT INTO FailedLogins(Username,Password,ClientType,Reason,IPAddress)
      VALUES(@UserID,@DBPassword,@Type,'Invalid Password',@IP)
      END

    ELSE
      BEGIN
      SET @ReturnVal='0|Logged in Successfully' +'|'+ rtrim(cast(@Type as char))
      INSERT INTO SuccessfulLogins(Username,Password,ClientType,Reason,IPAddress)
      VALUES(@UserID,@DBPassword,@Type,'Valid Login Credentials Provided',@IP)
      END 


    SELECT @ReturnVal
Return
ALTER过程[dbo].[Proc\u CheckUser]
@UserID VARCHAR(50),
@密码VARCHAR(50)
作为
不计较
声明@ReturnVal VARCHAR(500)
声明@PasswordOld VARCHAR(50)
声明@Type VARCHAR(50)
声明@IP NVARCHAR(50)
声明@DBPassword NVARCHAR(50)
选择@PasswordOld=Password、@Type=ClientType、@IP=IPAddress
来自客户
其中username=@userid和@DBPassword=HashBytes('SHA1',@Password)
如果@@ROWCOUNT=0
设置@ReturnVal='1 |用户名不正确'
插入失败登录(用户名、密码、客户端类型、原因、IP地址)
值(@UserID、@DBPassword、@Type、'Invalid Username'、@IP)
如果(@PasswordOld@DBPassword)
开始
设置@ReturnVal='1 |密码不正确'
插入失败登录(用户名、密码、客户端类型、原因、IP地址)
值(@UserID、@DBPassword、@Type、'Invalid Password'、@IP)
结束
其他的
开始
设置@ReturnVal='0 |成功登录'+'|'+rtrim(强制转换(@Type as char))
插入成功登录(用户名、密码、客户端类型、原因、IP地址)
值(@UserID、@DBPassword、@Type、'Valid Login Credentials Provided'、@IP)
结束
选择@ReturnVal
返回

上次忘记
返回
关键字添加
返回
关键字

ALTER procedure [dbo].[Proc_CheckUser]
 @UserID   VARCHAR(50),
 @Password VARCHAR(50)
 AS

    SET NOCOUNT ON

    DECLARE @ReturnVal VARCHAR(500)
    DECLARE @PasswordOld VARCHAR(50)
    DECLARE @Type VARCHAR(50)
    DECLARE @IP  NVARCHAR(50)
    DECLARE @DBPassword NVARCHAR(50)


    SELECT @PasswordOld = Password,@Type=ClientType,@IP=IPAddress
    FROM   Clients
    WHERE  username = @userid and @DBPassword=HashBytes('SHA1',@Password)

    IF @@ROWCOUNT=0
      SET @ReturnVal='1|Incorrect Username'
      INSERT INTO FailedLogins(Username,Password,ClientType,Reason,IPAddress)
      VALUES(@UserID,@DBPassword,@Type,'Invalid Username',@IP)

    IF (@PasswordOld<>@DBPassword)
      BEGIN
      SET @ReturnVal='1|Incorrect Password'
      INSERT INTO FailedLogins(Username,Password,ClientType,Reason,IPAddress)
      VALUES(@UserID,@DBPassword,@Type,'Invalid Password',@IP)
      END

    ELSE
      BEGIN
      SET @ReturnVal='0|Logged in Successfully' +'|'+ rtrim(cast(@Type as char))
      INSERT INTO SuccessfulLogins(Username,Password,ClientType,Reason,IPAddress)
      VALUES(@UserID,@DBPassword,@Type,'Valid Login Credentials Provided',@IP)
      END 


    SELECT @ReturnVal
Return
ALTER过程[dbo].[Proc\u CheckUser]
@UserID VARCHAR(50),
@密码VARCHAR(50)
作为
不计较
声明@ReturnVal VARCHAR(500)
声明@PasswordOld VARCHAR(50)
声明@Type VARCHAR(50)
声明@IP NVARCHAR(50)
声明@DBPassword NVARCHAR(5
IF (@@ROWCOUNT=0)
BEGIN
  SET @ReturnVal = '1|Incorrect Username';

  INSERT INTO FailedLogins(Username,Password,ClientType,Reason,IPAddress)
  VALUES(@UserID, @DBPassword, @Type, 'Invalid Username', @IP);
END;
ELSE
BEGIN
   IF (@PasswordOld!=Hashbytes('SHA1',@Password))
   BEGIN
      ...
   END;
   ELSE
   BEGIN
      ...
   END;
END;

SELECT @ReturnVal;