Dot-Net
是否可以將 ID 集合作為 ADO.NET SQL 參數發送?
例如。我可以寫這樣的程式碼嗎:
public void InactiveCustomers(IEnumerable<Guid> customerIDs) { //... myAdoCommand.CommandText = "UPDATE Customer SET Active = 0 WHERE CustomerID in (@CustomerIDs)"; myAdoCommand.Parameters["@CustomerIDs"].Value = customerIDs; //... }我知道的唯一方法是加入我的 IEnumerable,然後使用字元串連接來建構我的 SQL 字元串。
通常,您執行此操作的方式是傳入一個逗號分隔的值列表,然後在您的儲存過程中,解析該列表並將其插入到一個臨時表中,然後您可以將其用於連接。從Sql Server 2005 開始,這是處理需要保存數組的參數的標準做法。
這是一篇關於處理此問題的各種方法的好文章:
但是對於Sql Server 2008,我們最終將表變數傳遞到過程中,首先將表定義為自定義類型。
本文對此(以及更多 2008 功能)有很好的描述: