2013-10-11 112 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

相关问题