【问题标题】:SQL Server: How to pass data table to a stored procedure as an input parameter?SQL Server:如何将数据表作为输入参数传递给存储过程?
【发布时间】:2012-03-15 14:06:07
【问题描述】:

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

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

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

谢谢

【问题讨论】:

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


【解决方案1】:

通过使用表值参数,您可以将数据发送到 SQLServer 存储过程。此用户定义类型代表表结构的定义,兼容 SQLServer 2008 及后续版本。

您可以参考这个 msdn aritcle 找到示例和更多信息

【讨论】:

    【解决方案2】:

    大型复杂数据:对于大型复杂数据,我可能会将您的数据放入 *.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) 时非常方便

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-30
      • 1970-01-01
      • 2016-03-01
      • 2021-04-28
      • 1970-01-01
      • 2013-08-28
      相关资源
      最近更新 更多