请教在oci 程序中,如何传入绑定一个__int64的数值(win7 (32位系统),oracle10g)

hg81232463 2012-11-08 09:12:15
环境: 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 也不行。
...全文
197 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyyscf 2014-03-04
  • 打赏
  • 举报
回复
bindInputTest123 函数调用完,ii已经被回收,&ii内存对应的数据已经不再是 22222 了
hg81232463 2012-11-08
  • 打赏
  • 举报
回复
这种方法我也考虑过,不过想想不太方便,毕竟oci 直接提供了方法吧。 不过我用: hOciHandle.errCode =OCINumberFromInt(hOciHandle.hErr,value,sizeof(__int64),OCI_NUMBER_SIGNED,(OCINumber*)&number); doError(hOciHandle.errCode); 这种转换后再传进去也是失败。
oyljerry 2012-11-08
  • 打赏
  • 举报
回复
可以转换字符串,然后取值的时候取出字符串后再转换会INT64
hg81232463 2012-11-08
  • 打赏
  • 举报
回复
//调用bind void bindInputTest(char* sFieldName,void* value) { OCIBind* bind; hOciHandle.errCode =OCIBindByName(hOciHandle.hSql,&bind,hOciHandle.hErr, (OraText*)sFieldName,strlen(sFieldName),(void*)value,4,SQLT_INT, NULL,NULL,NULL,0,NULL,OCI_DEFAULT); doError(hOciHandle.errCode); } //调用方式,能找到数据。 int ii=22222; bindInputTest("id_nummber",&ii); //但是,如果我这样使用,就是再调用一个函数,函数里调用这个:bindInputTest() 函数就找不到数据了。。。 //调用bind void bindInputTest123() { int ii=22222; bindInputTest("id_nummber",&ii) } 表里的数据都很少,肯定都小于 int 32位的范围。 ----这是为什么啊?
hg81232463 2012-11-08
  • 打赏
  • 举报
回复
我是学习用的,一个是想弄明白,另一个是想顺便想写类的调用。
zyq5945 2012-11-08
  • 打赏
  • 举报
回复
直接拼写SQL, 不用bind方式。

4,018

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧