Назад | Перейти на главную страницу

SQL Passing a List<int> как параметр SqlCommand</int>

Могу ли я передать список в SqlCommand в качестве параметра?

УДАЛИТЬ ИЗ MyTable ГДЕ Ключ В @MyParam

command.Parameters.AddValue ("MyParam", MyList);

Я понимаю, что могу просто перебрать список, но я искал более чистое решение.

Нет, в текущей форме нельзя

Есть несколько вариантов использования 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) ;