sql >> Database >  >> RDS >> Sqlserver

Geneste if-instructies in de SQL Server-opgeslagen procedure SELECT-instructie

Hiervoor zou ik proberen te gaan met een meer formele dynamische SQL-oplossing, zoiets als het volgende, gezien uw gedefinieerde invoerparameters

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: Het gebruik van dynamische SQL is NIET iets dat lichtvaardig moet worden opgevat, en in ALLE omstandigheden moet de juiste aandacht worden genomen om ervoor te zorgen dat u niet openstaat voor SQL-injectieaanvallen, maar voor sommige dynamische zoekbewerkingen is het een van de meest elegante route.



  1. SQL Server, LIKE en IN combineren?

  2. willekeurige getallen in java

  3. Hoe de functie Radians() werkt in PostgreSQL

  4. dbms_output.put drukt geen gegevens af