mybatis 批量插入sqlserver BigDecimal 精度下降的情况

现象:
1:批量插入数据时,如果插入的数据精度不统一,最终入库的数据精度统一按最低的精度入库;
2:单条插入无此问题;
3:批量更新也无此问题;
4:出现问题与写入数据的精度顺序无关;

1:使用SQL Server Profiler 跟踪sql如下:

declare @p1 int
set @p1=3
exec sp_prepare @p1 output,N'@P0 bigint,@P1 datetime,@P2 datetime,@P3 decimal(38,1),@P4 nvarchar(4000),@P5 bigint,@P6 int,@P7 nvarchar(4000),@P8 nvarchar(4000),@P9 bigint,@P10 datetime,@P11 datetime,@P12 decimal(38,2),@P13 nvarchar(4000),@P14 bigint,@P15 int,@P16 nvarchar(4000),@P17 nvarchar(4000)',N'
INSERT INTO  xxxx( INDIC_ID, PUBLISH_DATE,
    PERIOD_DATE, DATA_VALUE, NOTES,
    ETL_CRC, QA_RULE_CHK_FLG, QA_MANUAL_FLG,
    QA_ACTIVE_FLG, CREATE_BY, CREATE_TIME,
    UPDATE_BY, UPDATE_TIME
    )
    VALUES
      
      (  @P0 ,
       @P1 ,
       @P2 ,  @P3 ,  @P4 ,
       @P5 ,  @P6 , 1,
      1,  @P7 ,GETDATE(),
       @P8 ,GETDATE()
      )
     , 
      (  @P9 ,
       @P10 ,
       @P11 ,  @P12 ,  @P13 ,
       @P14 ,  @P15 , 1,
      1,  @P16 ,GETDATE(),
       @P17 ,GETDATE()
      ) SELECT SCOPE_IDENTITY() AS _JTDS_GENE_R_ATED_KEYS_',1
select @p1

2:将批量插入的sql手动到数据库执行:正常
3:将库换成mysql:正常
4:将驱动由jtds换成 microsoft.sqlserver:异常,精度下降

解决方法:统一写入数据的精度
具体原因未知??

你可能感兴趣的:(mybatis 批量插入sqlserver BigDecimal 精度下降的情况)