使用表值参数插入非零比例的数值数据

使用表值参数插入非零比例的数值数据

问题描述:

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

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

发生这种情况的示例。

  • 一个表被插入和相关联的TVP有一个数字(6,3)柱
  • 有2行中的数据表被插入
    • 一个具有用于数字的一个值1.2柱
    • 另一个具有用于数字列

如果一个的1.23值该示例中的第二行对于数字列的值为1.3,没有错误。这是在Java中使用SQL Server 2016数据库的Microsoft JDBC驱动程序6.0 for SQL Server中的jdbc42.jar。

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

“0”没问题,“0.0”没问题。 “0.00”不是。插入数字修正它,0.00是好的。