Ada*_*bur 1 c# sql sql-server ado.net
我有一些C#代码正在填充TVP,然后在SQL Server中在该TVP中传递的地方调用存储过程。它利用标准的ADO.NET数据表和Rows.Add填充行。
当sqlCommand.ExecuteNonQuery()运行时,如果你捕获SQL事件探查器SQL跟踪,你会看到它这样的事情,它填充TVP的每一行中单独插入语句。
declare @p1 dbo.BigIntTable -- This is a table type
insert into @p1 values(1)
insert into @p1 values(2)
insert into @p1 values(3)
insert into @p1 values(4)
insert into @p1 values(5)
exec dbo.MyProc @InputTVP=@p1
go
Run Code Online (Sandbox Code Playgroud)
我希望它在一条语句中插入所有值,如下所示。下面的示例是有效的SQL,并且其性能比ADO.NET生成的SQL好得多。有任何想法吗?
declare @p1 dbo.BigIntTable -- This is a table type
insert into @p1
values
(1)
,(2)
,(3)
,(4)
,(5)
exec dbo.MyProc @InputTVP=@p1
go
Run Code Online (Sandbox Code Playgroud)