Pour SQL-Server, il existe deux approches courantes pour cela. La troisième option à éviter est de passer un varchar
et le concaténer dans une instruction SQL dynamique avec IN
- c'est une surface d'attaque d'injection claire.
Options raisonnables :
-
passer un
varchar
et utilisez un UDF pour diviser les données sur un délimiteur (comme dans cette question ), peut-être une virgule, un tube, une tabulation, etc. Joignez-vous au résultat :SELECT something, anotherthing FROM atable a INNER JOIN dbo.SplitUDF(@values) udf ON udf.Value = a.something
- utiliser un table-valued-parameter (SQL2008) et joindre directement (éviter l'UDF)