Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Instructions if imbriquées dans l'instruction SELECT de la procédure stockée SQL Server

Pour cela, j'essaierais d'utiliser une solution Dynamic SQL plus formelle, quelque chose comme ce qui suit, compte tenu de vos paramètres d'entrée définis

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)

AVIS DE NON-RESPONSABILITÉ : L'utilisation de Dynamic SQL n'est PAS quelque chose qui doit être prise à la légère, et une attention particulière doit être prise dans TOUTES les circonstances pour s'assurer que vous n'êtes pas ouvert aux attaques par injection SQL, cependant, pour certaines opérations de type recherche dynamique, c'est l'une des plus élégantes itinéraire.