SQL, передающий список<int> в качестве параметра SqlCommand
Могу ли я передать список в SqlCommand в качестве параметра?
УДАЛИТЬ ИЗ MyTable, ГДЕ НАЙДИТЕ @MyParam
command.Parameters.AddValue ("MyParam", MyList);
Я понимаю, что могу просто просмотреть список, но я искал более чистое решение.
1 ответ
Решение
Нет, вы не можете в текущей форме
Существует несколько вариантов использования UDF, XML или динамического SQL для передачи в списках.
Самая полная статья о том, как это сделать, - "Массивы и списки в SQL Server 2005 и последующих версиях " Эрланда Соммарского
Передайте их как параметр типа таблицы,
CREATE TYPE dbo.CategoryTableType AS TABLE
( CategoryID int )
затем употребите его в своей процедуре
CREATE PROCEDURE usp_UpdateCategories
(@tvpNewCategories dbo.CategoryTableType READONLY)
и делать что-то вроде
delete from dbo.Categories where id in (select CategoryID from @tvpNewCategories) ;