我正在使用TVP,我正在尝试将数据表作为TVP传递给存储过程.当命令尝试ExecuteNonQuery时,它会抛出一个错误: 操作数类型冲突:datetime2与int不兼容.表值参数“@tvpPermitWork”的数据不符合参数
操作数类型冲突:datetime2与int不兼容.表值参数“@tvpPermitWork”的数据不符合参数的表类型.
我使用可视化工具检查了数据表,我发现所有数据都是正确的.我现在卡住了,我没有时间将其更改为具有单个参数的存储过程.
任何有关如何解决这个问题的建议都非常感谢.
如果没有看到你的代码,很难确切知道发生了什么,但作为一个快速的猜测,你设置SqlParameter.SqlDbType = SqlDbType.Structured,SqlParameter.TypeName =“YourTableType”?如果是这样,生成的T-SQL是什么样的(你可以用SQL Profiler看到它)?
你的表类型是如何声明的? – CREATE TYPE YourTableType as TABLE(…)
你的存储过程是如何声明的? – 创建PROC … @arg YourTableType READONLY …
您的DataTable是如何配置的?它应该包括:
yourDataTable.Columns.Add("columnName", typeof(datetime2));