/ / Ist es mit dynamischer TSQL-Abfrage möglich? - asp.net, sql-server, ado.net

Ist es mit dynamischer TSQL-Abfrage möglich? - asp.net, sql-server, ado.net

Ich habe sehr lange Abfrage, die ich brauchefiltern basierend auf einigen Parametern, versuche ich zu vermeiden, dass unterschiedliche gespeicherte Prozeduren verwendet werden, oder wenn Anweisungen innerhalb einer gespeicherten Prozedur verwendet werden, indem teilweise dynamisches TSQL verwendet wird ...

Ich werde lange auswählen, nur um zum Beispiel willen

select a
from b
where c=@c
or d=@d

@c und @d sind Filterparameter, nur einer kann filternzur gleichen Zeit können aber auch beide Filter deaktiviert werden. 0 für jedes dieser Mittel bedeutet, dass param deaktiviert ist, sodass ich nvarchar mit where-Anweisung erstellen kann.

Wie kann ich hier dynamische Abfrage integrieren?"wo" kann zur normalen Abfrage hinzugefügt werden. Ich kann die ganze Abfrage nicht als großes nvarchar hinzufügen, da sich zu viele Dinge darin befinden, für die Änderungen erforderlich sind (z. B. Zeitpunkte, Unterabfragen, Verknüpfungen).

Antworten:

5 für die Antwort № 1

Wie wäre es mit etwas wie:

SELECT a
FROM b
WHERE (@c IS NULL OR c = @c)
AND (@d IS NULL OR d = @d)

Wenn Sie den Filter nicht verwenden, setzen Sie den Parameter auf NULL und der Zustand sollte kurzgeschlossen werden.


0 für die Antwort № 2

Ein bisschen spät aber

 SELECT a  FROM b
WHERE c = isNULL(@c, c)  AND d=  isNULL(@d, d)