有两个办法解决改问题:
1.修改Oracle8i数据库,把其中没有定义精度的列修改为number(38).这样C++程序也可以返回正确的值.这个办法适合数据库比较小的情况.
2.升级C++应用程序端的Oracle客户端,打p3262468_9204_WINNT补丁,该补丁会升级Oracle客户端的OLE DB版本,可以解决上述问题,该补丁是升级Oracle9204客户端的,也可以用来升级8i的客户端.但是会引起8i客户端不能执行sqlplus等错误,条件允许可以考虑升级到Oracle9204客户端.
上述两种办法在下面环境测试通过:
1.数据库服务器:Oracle8.1.7.4.0,Oracle10.2.0.1.0
2.Oracle客户端:Oracle8.1.7.0.0,Oracle9.2.0.1.0
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/62484/viewspace-927266/ ,如需转载,请注明出处,否则将追究法律责任。