【发布时间】:2018-03-19 14:52:50
【问题描述】:
我在网上能找到的似乎都是需要使用存储过程的表值参数的示例。我记得过去在没有存储过程的情况下这样做。这可能吗?
此代码不断抛出有关未指定类型的错误。
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();
【问题讨论】:
-
那是因为如果您将
SqlDbType.Structured用于TVP,您还需要设置TypeName属性。 (如果这就是你想要的,你不能先创建这种类型。) -
好的,我找到了如何指定TypeName:cmd.Parameters["@SetScheduledStart"].TypeName = "dbo.tvpUpdateScheduledStart";
标签: c# sql .net sql-server sql-server-2016