Uma solução que uso muito...
Forneça sua lista de números como um
VARCHAR(MAX)
string delimitada por vírgula, então use um dos muitos dbo.fn_split()
funções que as pessoas escreveram online. Um dos muitos exemplos on-line... SQL-User-Defined-Function-to-Parse-a-Delimited-Str
Essas funções recebem uma string como parâmetro e retornam uma tabela.
Então você pode fazer coisas como...
INSERT INTO @temp SELECT * FROM dbo.split(@myList)
SELECT
*
FROM
myTable
INNER JOIN
dbo.split(@myList) AS list
ON list.id = myTable.id
Uma alternativa é examinar os Parâmetros com valor de tabela. Eles permitem que você passe uma tabela inteira para um procedimento armazenado como um parâmetro. Como depende da estrutura que você está usando. Você está em .NET, Java, Ruby, etc, e como está se comunicando com o banco de dados?
Assim que soubermos mais detalhes sobre o código do aplicativo, podemos mostrar o código do cliente e o modelo de procedimento armazenado SQL, para usar Parâmetros com valor de tabela.