C# 不使用存储过程的表值参数
我在网上找到的似乎都是需要使用存储过程的表值参数示例。我记得过去在没有存储过程的情况下这样做。可能吗 此代码不断抛出有关未指定类型的错误C# 不使用存储过程的表值参数,c#,sql,.net,sql-server,sql-server-2016,C#,Sql,.net,Sql Server,Sql Server 2016,我在网上找到的似乎都是需要使用存储过程的表值参数示例。我记得过去在没有存储过程的情况下这样做。可能吗 此代码不断抛出有关未指定类型的错误 SqlCommand cmd = new SqlCommand(@" UPDATE t1 SET t1.ScheduledStartUTC = t2.ScheduledStartUTC FROM ScheduleTickets AS t1 INNER JOIN @SetScheduledS
SqlCommand cmd = new SqlCommand(@"
UPDATE t1
SET t1.ScheduledStartUTC = t2.ScheduledStartUTC
FROM ScheduleTickets AS t1
INNER JOIN @SetScheduledStart AS t2 ON t1.ScheduleId = t2.ScheduleId AND t1.PatchSessionId = t2.PatchSessionId
", c);
cmd.Parameters.Add("@SetScheduledStart", SqlDbType.Structured).Value = SetScheduleTicketsDateDT;
cmd.ExecuteNonQuery();
在这里,您可以找到如何在不使用存储过程的情况下使用它: 基本上,它要求您:
预先在服务器上创建类型dbo.tvpudatescheduledstar作为表(ScheduleId int,PatchSessionId int)
SqlParameter
的TypeName
属性中指定此类型这是因为如果使用TVP的
SqlDbType.Structured
,还需要设置TypeName
属性。(如果你想先创建这个类型的话,你就不能绕开它。)好的,我找到了如何指定TypeName:cmd.Parameters[“@SetScheduledStart”].TypeName=“dbo.tvpDateScheduledStart”;