Ich habe eine gespeicherte Prozedur, die Informationen aus einer Tabelle basierend auf 4 Parameter abruft.SQL ignorieren Teil von WHERE, wenn der Parameter null ist
Ich möchte Werte basierend auf den Parametern abrufen, aber wenn ein Parameter NULL ist, dann wird dieser Parameter nicht überprüft. Wenn also alle 4 Parameter null sind, würde ich die gesamte Tabelle anzeigen.
Das ist mein SP (wie Sie funktioniert dies nur für 1 Parameter atm sehen):
CREATE PROCEDURE myProcedure
@Param1 nvarchar(50),
@Param2 nvarchar(50),
@Param3 nvarchar(50),
@Param4 nvarchar(50)
AS
BEGIN
IF(@Param1 IS NULL)
BEGIN
SELECT Id, col1, col2, col3, col4 FROM myTable
END
ELSE
BEGIN
SELECT Id, col1, col2, col3, col4 FROM myTable WHERE col1 LIKE @Param1+'%'
END
END
Gibt es eine Möglichkeit eine dieser ohne mit IF
für jede mögliche Kombination zu tun (15 IFs)
Erland Sommarskogs [Dynamische Suchbedingungen in T-SQL] (http://www.sommarskog.se/dyn-search.html) wäre der übliche Startplatz. –
mögliches Duplikat von [Stored Procedure mit optionalen "WHERE" -Parametern] (http://stackoverflow.com/questions/697671/stored-procedure-with-optional-where- parameters) – GSerg