Sql-Server

SQL 將 List<int> 作為 SqlCommand 參數傳遞

  • April 20, 2020

我可以將 List 作為參數傳遞給 SqlCommand 嗎?

從 MyTable 中刪除 WHERE 鍵入 @MyParam

command.Parameters.AddValue(“MyParam”,MyList);

我意識到我可以遍歷列表,但我正在尋找更清潔的解決方案。

不,您不能以目前形式

有幾個選項使用 UDF 或 XML 或動態 SQL 來傳遞列表。

關於如何做到這一點的最全面的文章是Erland Sommarskog 的“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) ;  

引用自:https://serverfault.com/questions/141936