- 论坛徽章:
- 0
|
最近在做到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的问题,接触过的解答一下吧。 |
|