我有一些C#代码,用来填充TVP并调用SQL Server中的存储过程,将其传递给TVP。它使用标准的ADO.NET DataTable和
当
我希望它能够在一个语句中插入所有的值,如下所示。下面的示例是有效的SQL,比ADO.NET生成的SQL性能要好得多。有什么想法吗?
Rows.Add
来填充行。当
sqlCommand.ExecuteNonQuery()
运行时,如果您在SQL Profiler中捕获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
我希望它能够在一个语句中插入所有的值,如下所示。下面的示例是有效的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