SQL Server:如何将数据表作为输入参数传递给存储过程?

时间:2012-02-25 07:54:46

标签: sql-server-2008 stored-procedures datatable parameter-passing

我有一个数据表,在我的应用程序中填充了一些用户通过excel文件输入的值。我的应用程序targer .net框架是2.0,我无法将其更改为3.0或3.5以使用LINQ功能。

因此,我必须将数据表值发送到存储过程并在连接操作中提供它们。

这是一个好的解决方案吗?如果是,我如何将我的数据表作为输入参数发送到存储过程?

谢谢

2 个答案:

答案 0 :(得分:2)

通过使用表值参数,您可以将数据发送到SQLServer存储过程。此用户定义类型表示表结构的定义,并与SQLServer 2008和下一版本兼容。

您可以找到有关此msdn aritcle

的示例和更多信息

答案 1 :(得分:1)

大型复合体对于大型复杂数据,我可能会将您的数据转换为* .csv文件(如果它在Excel中不是那样),请使用.Net将其BCP转换为#temp表,然后在同一个连接上调用proc并让proc始终知道在#temp表中查找数据。 BCP是将大块数据放入SQLServer的禁区方式。

中等大小:如果数据的大小很小,那么您可以将其格式化为XML并将其发送到proc。这是使用C#http://www.a2zdotnet.com/View.aspx?Id=107

的简单示例

小分隔:对于小型列表类型数据,您可以通过以逗号分隔的值字符串形式发送它。将ID列表发送到proc(http://blog.logiclabz.com/sql-server/split-function-in-sql-server-to-break-comma-separated-strings-into-table.aspx)时,这非常方便