Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Instruções if aninhadas na instrução SELECT do procedimento armazenado do SQL Server


Para isso, tentaria usar uma solução SQL dinâmica mais formal, algo como o seguinte, dados seus parâmetros de entrada definidos
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)

ISENÇÃO DE RESPONSABILIDADE: O uso de SQL Dinâmico NÃO é algo que deve ser tomado de ânimo leve, e a devida consideração deve ser tomada em TODAS as circunstâncias para garantir que você não esteja aberto a ataques de injeção de SQL, no entanto, para algumas operações do tipo de pesquisa dinâmica, é um dos mais elegantes rota.