Ho una stored procedure che recupera informazioni da una tabella in base a 4 parametri.SQL ignora parte del WHERE se il parametro è nullo
Voglio ottenere valori basati sui parametri, ma se un parametro è NULL, quel parametro non viene controllato. Quindi se tutti e 4 i parametri sono nulli mostrerei l'intera tabella.
Questo è il mio SP (come si può vedere, questo funziona solo per 1 parametro 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
C'è qualche modo per fare questo senza avere una IF
per ogni possibile combinazione (15 FI)?
Le condizioni di ricerca dinamica in T-SQL di Erland Sommarskog (http://www.sommarskog.se/dyn-search.html) sarebbero il solito punto di partenza. –
possibile duplicato di [Stored procedure con parametri "WHERE" facoltativi] (http://stackoverflow.com/questions/697671/stored-procedure-with-optional-where-parameters) – GSerg