gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 14:35:43 24 4
gpt4 key购买 nike

能否以某种方式将数据表传递到 SQL Server 2005 或 2008 中?

我知道标准方式似乎是将 XML 传递给 SP。并且数据表可以很容易地以某种方式转换为 XML 来做到这一点。

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

我记得在 2008 年听说过 SQL 和 CLR 以某种方式协同工作,但我一直不明白。也许这意味着您可以在存储过程中引用 .NET 对象?

最佳答案

您可以在 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();
}

关于sql - 将 DataTable 传递给存储过程。有没有更好的办法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2784851/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com