Para SQL-Server, hay dos enfoques comunes para esto. La tercera opción a evitar es pasar un varchar
y concatene en una declaración SQL dinámica con IN
- esta es una superficie de ataque de inyección clara.
Opciones razonables:
-
pasar un
varchar
y use un UDF para dividir los datos en un delimitador (como en esta pregunta ), tal vez coma, barra vertical, tabulador, etc. Únase al resultado:SELECT something, anotherthing FROM atable a INNER JOIN dbo.SplitUDF(@values) udf ON udf.Value = a.something
- use un parámetro de valores de tabla (SQL2008) y únase directamente (evite el UDF)