Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Istruzioni if ​​nidificate nell'istruzione SELECT della stored procedure di SQL Server

Per questo proverei ad andare con una soluzione SQL dinamica più formale, qualcosa come la seguente, dati i parametri di input definiti

DECLARE @SQL VARCHAR(MAX)

SET @SQL = '
SELECT

FROM
     database.dbo.table T
WHERE
     T.deleted = ''n'' '

--Do your conditional stuff here
IF @searchf1 <> '' THEN
    SET @SQL = @SQL + ' AND fieldf1 = ' + @searchf1 + ' AND fieldr1 = ' + @searchr1 + ''' '

--Finish the query
SET @SQL = @SQL + ' ORDER BY xxx'

EXEC(@SQL)

DISCLAIMER: L'uso di Dynamic SQL NON è qualcosa che dovrebbe essere preso alla leggera e dovrebbe essere presa in debita considerazione in TUTTE le circostanze per assicurarsi di non essere aperti agli attacchi di SQL injection, tuttavia, per alcune operazioni di tipo di ricerca dinamica è una delle più eleganti percorso.