2016-05-06 4 views
2

Ich mache eine tSQL Zuweisung, und eine der Anforderungen ist zu überprüfen, ob die eingegebene charity ID existiert und wenn nicht einen Fehler zurück, dann muss ich check Wenn die Tax Date der Wohltätigkeitsorganisation im laufenden Jahr ist. Dies ist, was ich versucht habe,tSQL überprüfen, ob Eingabe-ID gültig ist und wenn das Datum im aktuellen Jahr ist

IF NOT EXISTS (SELECT CharityID FROM CharityTbl WHERE [CharityID] = '@CharityID') 
begin 
    raiserror ('Sorry Invalid Charity ID', 16,1) 
    return 99 
end 
--if the TaxNoDateOfIssue for the charitytbl is not in the current year raise an error 
IF NOT Exists (Select TaxNoDateOfIssue FROM CharityTbl WHERE YEAR(TaxNoDateOfIssue) = YEAR(getdate()) 

Ich bin nicht sicher, wie ich die zweite schreiben sollte if-Anweisung, so würde jede Hilfe

Antwort

2

Sie müssen nur fügen Sie die where-Klausel in derselben Abfrage geschätzt. Siehe unten Abfrage.

IF NOT EXISTS (SELECT CharityID FROM CharityTbl WHERE [CharityID] = '@CharityID' or YEAR(TaxNoDateOfIssue) = YEAR(getdate()) 
begin 
raiserror ('Sorry Invalid Charity ID', 16,1) 
return 99 
end 
+0

Dank für die schnelle Antwort, Soll ich the'and' Betreiber eher than'or' Operator mit oder macht es einen Unterschied? – Kevin

+1

Sie sollten in Ihrem Fall verwenden oder Operator verwenden und gibt Ihnen ein falsches Ergebnis. –

2

Ich hoffe, das ist die Sache die Sie erwarten.

IF EXISTS (SELECT CharityID FROM CharityTbl WHERE [CharityID] = '@CharityID') -- fist condition 
BEGIN 
IF NOT Exists (Select TaxNoDateOfIssue FROM CharityTbl WHERE YEAR(TaxNoDateOfIssue) = YEAR(getdate()) -- second condition if 1st success 
BEGIN 
RAISERROR('Sorry Invalid Tax Year', 16,1) 
RETURN 99 
END 
END 
ELSE 
BEGIN 
RAISERROR('Sorry Invalid Charity ID', 16,1) -- if 1st fails 
RETURN 99 
END 
+0

@Kevin Obwohl beide Lösungen Ihnen ähnlich aussehen könnten, würde ich diese Lösung jedoch empfehlen. Der Hauptgrund ist, dass Sie eine Fehlermeldung zurückgeben sollten, die das korrekte Problem anzeigt. Sie sollten die gleiche Nachricht nicht für zwei Bedingungsfehler zurückgeben. Dies ist eine der Daumenregeln, denen ein Entwickler folgen sollte. Ruhe, hängt immer davon ab, wie Sie mit dem Fehler am Anwendungsende umgehen. Viel Spaß beim Programmieren :) –

Verwandte Themen