SQL 传递列表作为 SqlCommand 参数

SQL 传递列表作为 SqlCommand 参数

我可以将 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) ;  

相关内容