我已经编写了以下存储过程:

ALTER PROCEDURE [dbo].[sp_Accounts_ValidateLogin]
   @EmailAddress varchar(255),
   @Password varchar(20)
AS
   DECLARE @UserID int

   SELECT @UserID = UserID
   FROM Accounts_Users
   WHERE EmailAddress = @EmailAddress and Password = @Password

   IF @UserID != NULL
      RETURN @UserID
   ELSE
      RETURN -1

当这个过程被执行时,它显示,
No rows affected.
(0 row(s) returned)
@RETURN_VALUE = -1

但每当我重写SELECT语句时,
SELECT UserID
FROM Accounts_Users
WHERE EmailAddress = @EmailAddress and Password = @Password

结果是:
UserID
---------------------------------------------------------------------------------------
3
No rows affected.
(1 row(s) returned)
@RETURN_VALUE = -1

我的问题是为什么变量@UserID没有在第一个select语句中设置?

最佳答案

啊!=空将无法按预期工作。
成功:

IF @UserID IS NOT NULL

下面的问题有一点关于原因的信息,所以我不需要重新发布它(这基本上是因为null不是一个实际值):
Not equal <> != operator on NULL

关于sql - 为什么在此select语句中未设置变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12420835/

10-10 13:29