使用表值参数插入非零刻度的数字数据

时间:2017-03-08 20:54:51

标签: java sql-server-2016 table-valued-parameters

我使用表值参数将大量数据插入到各种表中。当这些表具有带缩放的数字列并且在单个数据表中时,存在具有不同比例数的行我得到以下错误:

传入的表格数据流(TDS)远程过程调用(RPC)协议流不正确。表值参数3(“”),第0行,第0列:数据类型0x6C具有无效的精度或比例

发生这种情况的一个例子。

  • 正在插入的表格和相关联的tvp具有数字(6,3)列
  • 正在插入数据表中有2行
    • 数字列
    • 的值为1.2
    • 另一个数字列
    • 的值为1.23

如果该示例中的第二行对于数字列的值为1.3,则不会出现错误。这是在Java中使用来自带有SQL Server 2016数据库的SQL Server的Microsoft JDBC驱动程序6.0中的jdbc42.jar。

1 个答案:

答案 0 :(得分:0)

在设置集成测试并花费一个小时左右尝试不同的事情后,我发现原因是这些值作为字符串插入到数据表中,并且列的值为零,并且有多个尾随零导致此错误。

“0”没关系,“0.0”没关系。 “0.00”不是。按数字插入行修复它,0.00就可以了。