Эта статья должна вам помочь: http://msdn.microsoft.com/en-us/library/aa496058%28SQL.80%29.aspx
Я использовал это в прошлом для создания хранимой процедуры, принимающей один параметр varchar с разделителями-запятыми.
Мой источник из программы на C # представлял собой проверенный список, и я построил строку с разделителями-запятыми, используя цикл foreach и StringBuilder для выполнения конкатенации. Хотя могут быть и лучшие методы, в зависимости от количества элементов в вашем списке.
Чтобы вернуться к части SQL, функция fn_Split, обсуждаемая в статье, позволяет преобразовать строку с разделителями-запятыми обратно в переменную таблицы, которую SQL Server может понять ... и которую можно запросить в вашей хранимой процедуре.
Вот пример:
CREATE PROCEDURE GetSelectedItems
(
@SelectedItemsID Varchar(MAX) -- comma-separated string containing the items to select
)
AS
SELECT * FROM Items
WHERE ItemID IN (SELECT Value FROM dbo.fn_Split(@SelectedItemsIDs,','))
RETURN
GO
Обратите внимание, что вы также можете использовать внутреннее соединение вместо IN (), если хотите.
Если на вашем SQL Server нет пользовательской функции fn_Split, вы можете найти ее здесь: http://odetocode.com/Articles/365.aspx
Надеюсь, это поможет.