免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1149 | 回复: 0
打印 上一主题 下一主题

[讨论]oracle 10g中pro*c编译的一些问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-10-26 09:17 |只看该作者 |倒序浏览
最近在做到oracle 10g的升级,以前的Pro*c程序在oracle 10g上发现问题多多,搜索了一下坛子,没怎么有10g上的成功经验,我现在也卡壳了,将过程拿过来跟大家交流一下。
1,最开始,syntax error at line 40, column 9, file /usr/include/sys/stdio.h。。。。
PCC-S-02201, Encountered the symbol "lock_t" when expecting one of the following。。。
这之类的,原因不明,不过在proc 命令中加 parse=NONE就可以避免;
有可能会出size_t,这个google了一个相关的解释说是gcc版本的问题,需要3.3.3之上的版本
2,出signal.h相关的错误,
如/usr/include/sys/siginfo.h:259: error: parse error before "ctid_t"
/usr/include/sys/siginfo.h:292: error: parse error before '}' token
/usr/include/sys/siginfo.h:292: error: ISO C forbids data definition。。。
这个跟gcc的版本有关,最好用3.3.3以上版本,也可以做一下修改:
cd /usr/local/lib/gcc-lib/i386-pc-solaris2.10/3.3.2/install-tools/
在mkheaders.conf文件前加入SHELL=/bin/sh
并执行
./mkheaders
3,如果还有问题可以查看一下pcscfg.cfg,不过如果makefile设定得当的话这里可以不作修改。参考


4,完了我这里还有问题,这个估计跟10g有关了。10g得proc文档很难找,只找到了一个“README FILE FOR PRODUCT Pro*C/C++ RELEASE 10.1.0.2.0”(/$ORACLE_HOME/precomp/doc/proc/readme.doc),里面没有详细讲。

第一种错误,EXEC SQL select * from a where a.b=:ID;这种语句中的ID需要定义为host variable,而我之前的都是用的c的变量(虽然不合语法,不过在8.1.7上都是过的);
第二种错误,c中定义的一些结构会导致错误。如:
EXEC SQL BEGIN DECLARE SECTION;
  my_stat db_sDataStat[BAT_INS_NUM];
..1
EXEC SQL END DECLARE SECTION;
PCC-S-02201, Encountered the symbol "my_stat" when expecting one of the following:。。。。
其中my_stat是用c定义的结构,现在就卡到这里了,不知道是我的概念理解错误,还是10G的问题,接触过的解答一下吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP