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
varcharoch 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)