亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索

C#中如何使用存儲過程的表值參數(shù)?如何傳遞?

煙雲(yún)
發(fā)布: 2025-10-15 21:02:01
原創(chuàng)
215人瀏覽過
首先在SQL Server創(chuàng)建用戶定義表類型和存儲過程,然后在C#中通過DataTable配合SqlDbType.Structured與TypeName傳遞數(shù)據(jù),實現(xiàn)高效批量插入。

c#中如何使用存儲過程的表值參數(shù)?如何傳遞?

在C#中使用存儲過程的表值參數(shù)(Table-Valued Parameters, TVP),需要在數(shù)據(jù)庫端定義用戶自定義表類型,并在存儲過程中作為參數(shù)接收。C#通過 DataTableDbDataReader 將數(shù)據(jù)傳遞給該參數(shù)。以下是具體步驟和示例。

1. 在SQL Server中創(chuàng)建用戶定義表類型

首先,在數(shù)據(jù)庫中定義一個表類型,作為TVP的基礎(chǔ)。

示例:

CREATE TYPE dbo.UserListType AS TABLE
(
    Id INT,
    Name NVARCHAR(50)
);
登錄后復(fù)制

2. 創(chuàng)建使用TVP的存儲過程

編寫存儲過程,接收表值參數(shù)。

示例:

<pre class="brush:php;toolbar:false;">
CREATE PROCEDURE dbo.InsertUsers
    @Users dbo.UserListType READONLY
AS
BEGIN
    INSERT INTO Users (Id, Name)
    SELECT Id, Name FROM @Users;
END
登錄后復(fù)制

3. C#代碼中傳遞DataTable作為TVP

在C#中,使用 SqlParameter 并設(shè)置其 SqlDbTypeStructured,同時指定 TypeName 為自定義表類型名。

示例代碼:

如知AI筆記
如知AI筆記

如知筆記——支持markdown的在線筆記,支持ai智能寫作、AI搜索,支持DeepseekR1滿血大模型

如知AI筆記27
查看詳情 如知AI筆記
<pre class="brush:php;toolbar:false;">
using System;
using System.Data;
using System.Data.SqlClient;
<p>var dataTable = new DataTable();
dataTable.Columns.Add("Id", typeof(int));
dataTable.Columns.Add("Name", typeof(string));</p><p>// 添加數(shù)據(jù)行
dataTable.Rows.Add(1, "Alice");
dataTable.Rows.Add(2, "Bob");</p><p>using (var connection = new SqlConnection(connectionString))
{
connection.Open();
using (var command = new SqlCommand("InsertUsers", connection))
{
command.CommandType = CommandType.StoredProcedure;</p><pre class="brush:php;toolbar:false;"><code>    var parameter = new SqlParameter("@Users", SqlDbType.Structured)
    {
        TypeName = "dbo.UserListType",
        Value = dataTable
    };

    command.Parameters.Add(parameter);
    command.ExecuteNonQuery();
}
登錄后復(fù)制

}

4. 注意事項

  • TVP 參數(shù)必須聲明為 READONLY,不能在存儲過程中修改。
  • C# 中只能傳遞 DataTable、DbDataReader 或?qū)崿F(xiàn)了 IEnumerable<SqlDataRecord> 的對象。
  • Type name 必須與數(shù)據(jù)庫中定義的表類型完全一致(包括 schema)。
  • 確保連接字符串具有執(zhí)行存儲過程和插入數(shù)據(jù)的權(quán)限。

基本上就這些。只要數(shù)據(jù)庫類型和C#傳入的數(shù)據(jù)結(jié)構(gòu)匹配,TVP就能高效傳遞多行數(shù)據(jù),避免多次調(diào)用。

以上就是C#中如何使用存儲過程的表值參數(shù)?如何傳遞?的詳細內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!

最佳 Windows 性能的頂級免費優(yōu)化軟件
最佳 Windows 性能的頂級免費優(yōu)化軟件

每個人都需要一臺速度更快、更穩(wěn)定的 PC。隨著時間的推移,垃圾文件、舊注冊表數(shù)據(jù)和不必要的后臺進程會占用資源并降低性能。幸運的是,許多工具可以讓 Windows 保持平穩(wěn)運行。

下載
來源:php中文網(wǎng)
本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權(quán)歸原作者所有,本站不承擔相應(yīng)法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn
最新問題
開源免費商場系統(tǒng)廣告
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
關(guān)于我們 免責申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學習者快速成長!
關(guān)注服務(wù)號 技術(shù)交流群
PHP中文網(wǎng)訂閱號
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時隨地碎片化學習
PHP中文網(wǎng)抖音號
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號