为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:sec_8.1.2.70_pack2_dmdci
【操作系统】:麒麟v10
【CPU】:FT-2000
【问题描述】*:OCI 接口配置转换处理的SQLT_BDOUBLE类型没有小数,或者小数发生了进位,怎么配置才能显示和数据库里面显示的一样?
求解
图1 数据库里面的数据:
图2 页面查询结果:
图3 代码里面的配置:
图4 手册里面的介绍:
发现了自己的问题
尝试一下,看看对不对
SQLT_BDOUBLE改成 SQLT_FLT 如手册图一样
fsbc字段是float,那么在数据库内部是C语言的浮点数,也就是存在一定的精度,使用manager工具查询时,JDBC接口对float类型进行了转换,使用OCI接口时也会存在转换,这两种转换是可能存在差异的。因为前者JDBC在manager上显示时需要转换为字符串显示,而OCI根据绑定的目标数类型来转换。
针对浮点数来说,DM数据库内部存储的格式是相同的(select dump(fsbc)from xxx 获取数据库的内部存储),只是通过不同接口呈现的结果存在一定的差异,这个差异对浮点数来说是允许的,例如:1.2 这个数值,不同结果呈现的结果为:1.200000000000000和1.199999999999999。
如果要求不同的接口显示的浮点数始终一致,那么请使用decimal精确数据类型。这里需要注意的是,DM的浮点数和Oracle的浮点数是不一样的。
求解,请各位老师帮忙看看