SQL Where: Optionale Parameter mit OR auswerten

08/01/2009 - 13:10 von Adrian Thomale | Report spam
Hallo!

Ich habe eine kleine (oder größere) SQL-Anweisung in einer Prozedur,
für die mehrere, teilweise optionale Parameter übergeben werden.
Diese Parameter werden als Argument im Where-Abschnitt benötigt.

Beispiel mit 2 Parametern @ID und @Status (jeweils int):

SELECT Name, Vorname, Straße, Ort
FROM Adressen
WHERE (@ID Is Null Or AdressenID = @ID) AND
(@StatusID Is Null Or StatusID = @StatusID)

Mein Gedanke bei mehreren Parametern (z.B. 3 bis 6) ist, daß ich nicht
in der Prozedur mit IF und Else, je nach Parameter, den
Where-Abschnitt neu zusammenbasteln muß.
Wenn ein Parameter Null ist, wird der jeweils geklammerte einfach
"wahr" und beieinflusst im Ergebnis nicht die anderen Teile.

Nur und was ich nicht weiß: Könnte es ggf. Nachteile in der
Geschwindigkeit geben, wenn viele Parameter Null wàren?

Und eine kleine Frage am Schluß: Wenn das SQL-Konstrukt größer wàre,
bringt es einen Vorteil (nicht nur von der Wartung und der
Übersichtlichkeit) in der Geschwindigkeit wenn man es als view
abspeichert?
Sollte man also möglichst viel an SQL in einer Prozedur als view
"auslagern"?

Vielen Dank für Kommentare!
Grüße, Adrian
 

Lesen sie die antworten

#1 Hannes Brunner
08/01/2009 - 14:01 | Warnen spam
Hallo Adrian,

Adrian Thomale schrieb:
Hallo!

Ich habe eine kleine (oder größere) SQL-Anweisung in einer Prozedur,
für die mehrere, teilweise optionale Parameter übergeben werden.
Diese Parameter werden als Argument im Where-Abschnitt benötigt.

Beispiel mit 2 Parametern @ID und @Status (jeweils int):

SELECT Name, Vorname, Straße, Ort
FROM Adressen
WHERE (@ID Is Null Or AdressenID = @ID) AND
(@StatusID Is Null Or StatusID = @StatusID)



schau hier mal rein:
http://www.sommarskog.se/dyn-search.html

Gruß
Hannes

Ähnliche fragen