Mam procedurę składowaną, która pobiera informacje z tabeli na podstawie 4 parametrów.SQL ignoruje część WHERE, jeśli parametr ma wartość null
Chcę uzyskać wartości na podstawie parametrów, ale jeśli parametr ma wartość NULL, to parametr ten nie jest sprawdzany. Więc jeśli wszystkie 4 parametry mają wartość null, pokażę całą tabelę.
To moja SP (jak widać, to działa tylko dla 1 parametru ATM):
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
Czy jest jakiś sposób, aby to zrobić bez mający IF
dla każdej możliwej kombinacji (15 FI)?
Erland Sommarskog [Dynamiczne warunki wyszukiwania w T-SQL] (http://www.sommarskog.se/dyn-search.html) będzie zwykłym miejscem początkowym. –
możliwy duplikat [procedury składowanej z opcjonalnymi parametrami "WHERE"] (http://stackoverflow.com/questions/697671/stored-procedure-with-optional-where-parameters) – GSerg