我可以将 List 传递到 SqlCommand 作为参数吗?
从 MyTable 中删除 @MyParam 中的键
命令.参数.AddValue("MyParam",MyList);
我意识到我可以循环遍历列表,但我正在寻找更干净的解决方案。
答案1
不,目前还不能
有几种使用 UDF 或 XML 或动态 SQL 传递列表的选项。
关于如何做到这一点最全面的文章是“SQL Server 2005 及更高版本中的数组和列表”作者 Erland Sommarskog
答案2
将它们作为表类型参数传递,
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) ;