一千萬個為什麽

搜索

將DataTable傳遞給存儲過程。有沒有更好的辦法?


可以以某種方式將數據表傳遞到SQL Server 2005或2008嗎?

我知道將XML傳遞給SP的標準方式。並且數據表可以很容易地以某種方式轉換為XML來實現。

將.NET對象傳遞給SP怎麽樣?那可能嗎 ?

我記得聽說過SQL和CLR在2008年以某種方式協同工作但我從未理解過......也許這意味著你可以在存儲過程中引用.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();
}

轉載註明原文: 將DataTable傳遞給存儲過程。有沒有更好的辦法?

猜你喜歡