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) ;  
Другие вопросы по тегам