if (odefin(&cda, nTmp, (ub1 *) strRow, (sword) sizeof(strRow),        
(sword) SQLT_STR,
(sword) -1, (sb2 *) 0, (text *) 0, -1, -1,
(ub2 *) 0, (ub2 *) 0))你定义的结果类型定义成了SQLT_STR嘛!1 只要你把日期型的字段用to_char()出来就可以了!2 float 的字段改为 to_char(number_value,'9999999999.99')即可。

解决方案 »

  1.   

    我用的也是OCI,但是不是这种接口,因为我觉得这种比较罗嗦,而改用了OCIV8,觉得还可以。在读任意的数据时,OCI语句可以使用SQLT_STR来对任意类型的列数据进行读取,但是对日期、数字等类型最好额外处理。建议的一种方法是首先取得各列数据的属性(如果现知道当然更好),然后再使用不同的帮定语句。
      

  2.   

    hushuangyang(hushuangyang) :你好!
    你说的to_char()是在SQL语句里用吗?能详细说明一下吗?
      

  3.   

    假如,一条SQL:SELECT * FROM test
    在这条语句里,我也不知道TEST里有没有FLOAT,DATE的字段。在OCI程序里我要怎么处理?
      

  4.   

    不会吧!
    你难道不知道表里面的字段类型吗?如果不知道的话那在绑定变量的时候不要都定为SQLT_STR。当然我建议你如果不要返回游标结果集的话,定义为SQLT_STR是最好的方法。