当前位置:  开发笔记 > 编程语言 > 正文

将DataTable传递给存储过程.有没有更好的办法?

如何解决《将DataTable传递给存储过程.有没有更好的办法?》经验,为你挑选了1个好方法。

可以以某种方式将数据表传递到SQL Server 2005或2008吗?

我知道将XML传递给SP的标准方式.并且数据表可以很容易地以某种方式转换为XML来实现.

将.NET对象传递给SP怎么样?那可能吗 ?

我记得在某种程度上听说过SQL和CLR在2008年一起工作但我从来没有理解过......也许这意味着你可以在存储过程中引用.NET对象?



1> Paul Kearney..:

您可以在SQL中创建用户定义的表类型.然后,在存储过程中,接受类型的参数(用户定义的表类型)并将数据表作为其值传递给存储过程.

以下是http://msdn.microsoft.com/en-us/library/bb675163.aspx中的一些示例:

在SQL中:

CREATE TYPE dbo.CategoryTableType AS TABLE
    ( CategoryID int, CategoryName nvarchar(50) )

然后:

// Assumes connection is an open SqlConnection object.
using (connection)
{
// Create a DataTable with the modified rows.
DataTable addedCategories =
  CategoriesDataTable.GetChanges(DataRowState.Added);

// Configure the SqlCommand and SqlParameter.
SqlCommand insertCommand = new SqlCommand(
    "usp_InsertCategories", connection);
insertCommand.CommandType = CommandType.StoredProcedure;

SqlParameter tvpParam = insertCommand.Parameters.AddWithValue(
    "@tvpNewCategories", addedCategories);
tvpParam.SqlDbType = SqlDbType.Structured;

// Execute the command.
insertCommand.ExecuteNonQuery();
}

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有