2016-04-02 3 views
0

Ich versuche, eine Prozedur mit einem einfachen IF-ELSE-Statement zu schreiben. Aber springen Sie immer einfach in den ELSE-Block. Aber das IF ist wahr.MSSQL-Prozedur IF-Anweisung funktioniert nicht

Ich habe versucht, drei Möglichkeiten

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 

und

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

und

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

ich ein Drehbuch geschrieben, das Verfahren zu testen, es prüfe ich die SELECT-Anweisungen, auch. Sie sind richtig.

Edit: Rufe ich meine Prozedur falsch?

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

freundlichen Grüßen

+0

Es ist schwer zu sagen, wenn Sie die Prozedur falsch anrufen, weil Sie nicht die Definition des Verfahrens Post hat; Sie haben nur einen nicht kontextbezogenen Teil davon gepostet. Haben Sie nach der Zeile, in der Sie 'SET @ Count' gesetzt haben, auch 'PRINT @ Count' versucht? –

+0

Ja, Sie haben Recht, aber danke, also habe ich meinen Fehler gefunden. :) Ich habe meine Parameter falsch angegeben. Ich schrieb: Benutzername nvarchar anstelle von Benutzername nvarchar (32) – BHuelse

+0

OK. Schreiben Sie also entweder eine Selbstantwort (z. B. indem Sie die gelöschte bearbeiten, um die Lösung für andere bereitzustellen, oder löschen Sie Ihre Frage, wenn Sie sie nicht mehr benötigen). –

Antwort

0

Ok, fand mein Fehler. Ich habe meine Parameter falsch angegeben. schrieb ich:

@Username nvarchar 
@Password nvarchar 

statt:

@Username nvarchar(32), 
@Password nvarchar(32) 
Verwandte Themen