注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 利用手机和电池实现反地心..
 帮助

OCCI编程的两点体会


2007-08-23 20:56:31
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://dannyyuan.blog.51cto.com/212520/39543
在一次OCCI项目中,我有两点比较深刻的体会,小结如下:
一、平台相关性
因为10G的C/C++编译还是基于3.2.3版本的,所以在CentOS 4上会出现C/C++库不匹配的问题,这个需要从Oracle的material网站下载occi/clntsh的共享补丁包,用补丁包的共享库文件覆盖10G安装所得的共享库文件。如果基于CentOS 3上,则没有这个兼容性问题,所以不需要补丁包。这个类似于9i中的著名296版本问题,只是需要长一个心眼记住即可。
二、整型列值的抽取
因为考虑到数据的验证和简化,对NUMBER列直接用getInt()方法来抽取并赋值,一直以来还没有碰到什么问题,直到公司的业务扩大,对某列ID型NUMBER扩大全十位(原来一直是int32),我的程序就挂了,每次一碰到这种溢出数据就异常退出,造成后续数据停停走走,恢复很麻烦,后来统一用getString()方法来抽取,后续再用代码来验证,总算避开了这个问题。

本文出自 “守望者的技术日记和六味生活” 博客,请务必保留此出处http://dannyyuan.blog.51cto.com/212520/39543





    文章评论
 <<   1   2   >>   页数 ( 1/2 )  
2007-08-30 18:05:15
老兄,请问occi insert long or long raw字段类型数据只能插入4000,这个怎么解决知道吗?

m_Stmt->setBinaryStreamMode(3, 4000); //long raw类型不能大于4000?超过4000报错 ORA-24307: invalid length for piece

//long raw
  imgstream = m_Stmt->getStream(3);
  for (int k=0; k<399; k++) {
       if (imgstream->status() == Stream::READY_FOR_WRITE) {
       imgstream->writeBuffer("0123456789", 10);
       }
       else {
             printf("..@@@@@@@@\n");
             break;
       }
 
imgstream->writeLastBuffer("0123456789", 10);
m_Stmt->closeStream(imgstream);}

2007-08-30 20:53:40
不好意思,辜负你的期待了。我没用过这种数据类型来编程。不过查了查帮助文档,估计是你的列类型为RAW类型(MAX size<=2000BYTES),你输入的4000个字符转化为十六进制表示后正好2000个字节(一个字节表示两个十六进制)。
如果你的类型是LONG RAW,则可能是被用于索引字段了,此时会自动降为RAW。
以上为文档所述,不知是否能合你问题症结, 不胜惶恐。

2007-12-13 10:59:21
请问occi/clntsh的共享补丁包下载地址或者补丁号是多少,谢谢,在编译freeradius+oracle10g时发生了问题
open("/opt/app/oracle/product/10.2.0/lib/libclntsh.so.10.1", O_RDONLY) = -1 EACCES (Permission denied)
由此找到博主此文,希望能够得到帮助

2007-12-13 14:46:21
你需要确保路径链都是有权限的。
至于补丁是在oracle的material库里。

2007-12-13 15:02:42
您好,我是root权限,并设置了环境变量,log是我用strace保存下来的,至于metalink的帐号我是有的,只是不知道下宰哪个补丁,希望得到帮助,谢谢

2008-01-15 06:02:55
用occi, 10g和g++作为关键词去查吧。
或者给我mail地址,我发给你,就是两个更新的共享库而已。

2008-01-18 21:01:26
感谢答复,我的名字就是邮箱地址

2008-01-23 05:37:48
已发送,请查收。

2008-01-23 07:54:42
感谢,已收到,实验一下

2008-04-24 16:34:32
博主你好,你的第一个关于平台的体会有一个地方我需要问一下

因为10G的C/C++编译还是基于3.2.3版本的,所以在CentOS 4上会出现C/C++库不匹配的问题,这个需要从Oracle的material网站下载occi/clntsh的共享补丁包
能给个链接地址吗,oracle的材料网站下补丁包??我找了半天没找到,最近我就是碰到这个问题,麻烦你指点一下!先谢了!

 <<   1   2   >>   页数 ( 1/2 )  

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: