SQL2005之后数据库支持一种新的特性TVP(Table Valued Parameter) 可以用于批量更新或者是批量返回数据。
批量更新通过一次打开数据库链接完成大量数据的更新,节省开关数据库链接的时间,数据量少的时候效果并不明显,但是大批量数据的时候可以明显的提升效率批量更新
Step1:创建一种新的数据库类型
使用VS中Database Project
Create type [dbo].[TVPExample] as TABLE
(
[ID] bigint,
[Name] nvarchar(100)
)
Step2:创建一个存储过程
Create Procedure [dbo].[Proc_UpdateExample]
@tvpExample TVPExample readonly
as
begin tran UpdateExample
update Example set Name=tvpExample.Name where ID = tvpExample.ID
if @@Error <> 0
begin
rollback tran UpdateExample
return -1;
end
commit tran UpdateExample
return 1;
Step3:在程序中调用该存储过程
var dt =new DataTable();
dt.columns.add(new datacolumn("ID" Type.GetType("System.Int64")));
dt.columns.add(new datacolumn("ID" Type.GetType("System.String")));
foreach(var exampleRow in dtUpdate.rows)
{
var row = dt.NewRow();
row.id = exampleRow.ID;
row.Name = exampleRow.Name;
}
var conn = GetDBConnection();
try
{
conn.open();
var sqlCmd = new SqlCommnad{Connection =conn,CommandType = CommandType.StoredProcedure,CommandText = "dbo.Proc_UpdateExample"}
sqlCmd.parameters.add("@tvpExample",dt);
sqlCmd.ExecuteNonQuery();
}
catch(exception ex)
{
}
批量返回数据,主要是返回更新记录的信息,例如更新记录的ID或者是某些列的信息
Step1:创建一个新的数据库类型用来返回数据
Step2:创建一个存储过程
Step3:调用该存储过程来返回数据
本文介绍了如何利用SQL Server的Table Valued Parameter (TVP) 功能进行批量更新,以提高效率。首先创建一种新的数据库类型,然后定义一个存储过程用于更新操作,并在程序中调用此存储过程,通过示例展示了批量更新的过程。
288

被折叠的 条评论
为什么被折叠?



