次のストアド プロシージャを作成しました。
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
私の質問は、最初のselectステートメント内で変数@UserID
が設定されないのはなぜですか?