请教在oci 程序中,如何传入绑定一个__int64的数值(win7 (32位系统),oracle10g)
环境: win7,vs2008,oracle10g 客户端。 oracle10g 服务端
如下:我在 oracle 里有一个表字段为 number(15) 此值超过 32位的int型.
有一语句类似: select * from t where col=xxx 此时,需要bind,64位的值
//如下:
void bindInt64(char* sFieldName,void* value)
{
OCIBind* bind;
sb4 iLen=(sb4)sizeof(_int64);//8字节
hOciHandle.errCode =OCIBindByName(hOciHandle.hSql,&bind,hOciHandle.hErr,
(OraText*)sFieldName,strlen(sFieldName),(dvoid*)value,iLen,SQLT_LNG,//SQLT_INT 这个只有 32位
NULL,NULL,NULL,0,NULL,OCI_DEFAULT);
doError(hOciHandle.errCode);//处理错误,略.
}
//结果老是找不到数据. 上面调用的方法如下:
__int64 iValue=xxxx;
bindInt64("col",(void*)&iValue);
另:我查了下资料,SQLT_INT 好象是 32位的,因此不能用(用了也确实找不到)
那这个64位的如何绑啊?
其他方面都没有问题,如果是 32位的,我使用 SQLT_INT 肯定能找到数值的。
我找了下资料,发现 OCINumber 是一种 21 字节或22字节的类型,好象存储的数据方式有点怪,不知道我这种用法有没问题?
上面,SQLT_LNG 我换成SQLT_NUM,SQLT_VNU 也不行。