sql >> Databasteknik >  >> RDS >> Sqlserver

Kapslade if-satser i SQL Server lagrad procedur SELECT-sats

För detta skulle jag försöka gå med en mer formell Dynamic SQL-lösning, något i stil med följande, givet dina definierade indataparametrar

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)

ANSVARSFRISKRIVNING: Användningen av Dynamic SQL är INTE något som bör tas lätt på, och korrekt hänsyn bör tas under ALLA omständigheter för att säkerställa att du inte är öppen för SQL-injektionsattacker, men för vissa dynamiska sökoperationer är det en av de mest eleganta rutt.



  1. SQLite JSON_INSERT()

  2. SQL - Procedurkolumnfel

  3. Postgres Alter Kolumn Heltal till Boolean

  4. Unix SSH utan lösenord