2013-10-11 190 views
0

有沒有辦法將列表對象作爲存儲過程的參數傳遞?將列表代替sql參數傳遞給存儲過程

爲例如

List<class1> Allobj = new List<class1>(); 
// assume Allobj .Count=5,(5 class1 objects) 

現在調用存儲過程作爲

intResult = _helper.ExecuteNonQuery(base.Transaction, CommandType.StoredProcedure, "usp_InsertpurchaseEnquirydetails", Allobj); 

或是否有任何其他的方式來傳遞列表(ATLEAST添加到一個多維的SqlParameter陣列?

如果可能的話如何通過以及如何從存儲過程迭代它?

+0

** [本文](http://www.sommarskog.se/arrays-in-sql.html)**是一個很好的資源,它貫穿您在SQL-Server中處理集合的選項。 – Michael

+0

您是在編寫** SQL **(結構化查詢語言),並且真正意味着Microsoft ** SQL Server **(實際產品)?如果不是:**數據庫系統是用來做什麼的? –

回答

1

您正在尋找TableValueParameters。從SqlServer 2008開始,此功能被添加。它會幫助你通過一個DataTable作爲參數。

退房Table-Valued Parameters在MSDN

1

你可以使用表值參數來傳遞一個表或列表來SQL存儲過程

步驟簡要:

1)創建SQL表值參數服務器管理工​​作室

2)定義一個參數作爲創建的表值參數(它應該只讀)

3)C#SP參數類型設置爲System.Data.SqlDbType.Structured

4)通過你的列表作爲CLR數據表來存儲過程

波紋管鏈接是一個完整的代碼示例:

http://www.codeproject.com/Articles/39161/C-and-Table-Value-Parameters

相關問題