紧急求救,请大家帮忙一起看看,环境如下:
数据库服务端是unix系统,oracle 10g版本,
客户端为windows server2003环境,客户端装了oracle client for windows,
用mfc的CRecordset通过odbc访问oracle,
odbc驱动配的是oracle提供的"Oracle in OraClient10g_home1"。现在出现以下问题:
访问oracle表中的某个字段money,类型是number(16,2),会出现分位数丢失的情况,比如库里面是"1234567.89",读出来后变成"1234567.8",该问题出现概率很低,很难重现。CRecordset打开表的代码大概如下(省略一些判断语句):
CRecordset rs;
rs.Open(CRecordset::snapshot, "select money from table1", CRecordset::none);
CString strmoney;
CRecordset::GetFieldValue((short)0,strmoney);请各位有经验的高人帮忙找下原因,在线等待,万分感谢!

解决方案 »

  1.   

    取的時候進行一下轉換
    select to_char(98.8,'9999.99') from dual;
      

  2.   


    谢谢zxf_feng,已经增加to_char函数转换,但是无法验证问题已经修正,没法确认加了to_char后不会出问题,因为很难重现问题,查看了所有的CRecordset类说明,没看到关于字段类型匹配的说明,也不知道是odbc驱动的问题,还是MFC类的问题?
      

  3.   

    现在出现以下问题: 
    访问oracle表中的某个字段money,类型是number(16,2),会出现分位数丢失的情况,比如库里面是"1234567.89",读出来后变成"1234567.8",该问题出现概率很低,很难重现。
    --->楼主的情况,是指大部分时是正常的,偶尔会被截掉小数点。
    应该好好看看自已的代码,我猜应该是自已的代码问题。