Para SQL-Server, existem duas abordagens comuns para isso. A terceira opção a ser evitada é passar um
varchar
e concatene-o em uma instrução SQL dinâmica com IN
- esta é uma superfície de ataque de injeção clara. Opções razoáveis:
-
passe umvarchar
e use uma UDF para dividir os dados em um delimitador (como nesta pergunta ), talvez vírgula, barra vertical, tabulação, etc. Junte-se ao resultado:
SELECT something, anotherthing FROM atable a INNER JOIN dbo.SplitUDF(@values) udf ON udf.Value = a.something
- use um parâmetro com valor de tabela (SQL2008) e junte-se diretamente (evite a UDF)