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;