För SQL-Server finns det två vanliga tillvägagångssätt för detta. Det tredje alternativet att undvikas är att skicka in en varchar
och sammanfoga den till en dynamisk SQL-sats med IN
- detta är en tydlig injektionsattackyta.
Rimliga alternativ:
-
skicka in en
varchar
och använd en UDF för att dela upp data på en avgränsare (som i den här frågan ), kanske kommatecken, pipe, tab, etc. Gå med i resultatet:SELECT something, anotherthing FROM atable a INNER JOIN dbo.SplitUDF(@values) udf ON udf.Value = a.something
- använd en tabellvärderad-parameter (SQL2008) och gå med direkt (undvik UDF)