Hmmm ja
,
das Beispiel war etwas unglücklich formuliert.
Anders ...
Ich versuche die WHERE Clause in Abhängigkeit von den übergebenen Parametern individuell zu gestalten.
"Unbenutzte Parameter" könnte man mit % oder IS NOT NULL o.Ä. "unschädlich" machen aber
darauf möchte ich möglichst verzichten ...
Dieses Beispiel ist besser ...
SQL-Code:
CREATE PROCEDURE TEST
@SearchByID BIT = 0
@SearchByName BIT = 0
@ID UNIQUEIDENTIFIER = NULL
@Nachmane VATCHAR(20) = NULL
AS
BEGIN
SELECT bla, bla1, bla2
FROM Tabelle1
-- ab hier wirds interessant
-- geht so nicht ...
WHERE CASE WHEN @SearchByID=1 --Wenn SearchByID = 1 übergeben wurde WHERE Clause auf ID=@ID setzen
THEN ID=@ID
ELSE
CASE WHEN @SearchByName=1 --Wenn SearchByName = 1 übergeben wurde WHERE Clause
THEN Name=@Nachname --auf Name@Nachname setzen
ELSE ID IS NOT NULL -- sonst alle suchen (da ID in Tabelle1 nie NULL ist)
END
END
END