2016-04-02 20 views
0

簡単な手続きを書こうとしています。IF-ELSE-Statementしかし、たびにELSEブロックにジャンプします。しかし、IFは真です。MSSQLプロシージャIF文が機能しない

私は三つの方法

SET @Count = (SELECT COUNT(*) FROM UserTable WHERE Username = @Username AND Password = @Password) 
IF @Count > 0 
BEGIN 
    SET @SessionID = CONVERT(varchar(32), NEWID()) 
    PRINT 'IF Clause' 
    SET @Response = @SessionID 
END 
ELSE 
BEGIN 
    PRINT 'ELSE Clause' 
    SET @Response = 'error 401' 
END 

IF (SELECT COUNT(*) FROM UserTable WHERE Username = @Username AND Password = @Password) > 1 

IF EXISTS (SELECT * FROM UserTable WHERE Username = @Username AND Password = @Password) 

を試してみました私は、私はあまりにも、SELECT-文をご確認が、手順をテストするためのスクリプトを書きました。彼らは正しいです。

編集: プロシージャを間違って呼び出すことはできますか?

EXEC dbo.UPLogin @Username = 'test', @Password = 'test1234', @Response = @Response Output 
SELECT @Response 

よろしく

+0

を使用すると、プロシージャの定義を投稿していなかったので、それは、あなたが間違った手続きを呼び出している場合と言うのは難しいです。あなたは文脈外の部分だけを掲示しました。また、 'SET @ Count'の行の後に' PRINT @ Count'を試しましたか? –

+0

はい、あなたは正しいですが、ありがとうございましたので、私は間違いを発見しました。 :)私は自分のパラメータが間違っていると宣言した。私は書いた: ユーザー名の代わりにnvarcharユーザー名nvarchar(32) – BHuelse

+0

OK。それで、自己回答を投稿して(おそらくあなたが削除したものを編集して、おそらく)他の人に解決策を提供するか、答えが不要になったら質問を削除してください。 –

答えて

0

OK]をクリックして、私のエラーを検出しました。 私のパラメータが間違っていると宣言しました。 私が書いた:

@Username nvarchar 
@Password nvarchar 

の代わり:

@Username nvarchar(32), 
@Password nvarchar(32) 
関連する問題