我的PC文件在Solaris 10上用gcc编译能够通过,能够生成c文件,访问Oracle 10g数据库,但是将同样的PC文件移到windows xp下用VC6.0进行PRO*C编译无法通过,windows xp上安装了Oracle 10g客户端,这是什么原因?那些编译环境需要设置那?我在tools-->options-->directories中include了E:\ORAHOME_1\PRECOMP\PUBLIC;;E:\ORAHOME_1\OCI\INCLUDE;;executable files中加了E:\ORAHOME_1\BIN;;在project-->setting中commands加了proc connectora.pc oname=connectora.cpp sqlcheck=SYNTAX;;outputs中加了connectora.cpp;;工程中加了orasql10.lib文件,pcscfg.cfg文件中内容为:
define=(WIN32_LEAN_AND_MEAN)
sys_include=($ORACLE_HOME/precomp/public,/usr/include,/home/tuxedo/include)
include=$ORACLE_HOME/precomp/public
include=$ORACLE_HOME/precomp/hdrs
include=$ORACLE_HOME/precomp/LIB
include=$ORACLE_HOME/tpcc2x_2/src
include=$ORACLE_HOME/precomp/include
include=$ORACLE_HOME/oracore/include
include=$ORACLE_HOME/oracore/public
include=$ORACLE_HOME/rdbms/include
include=$ORACLE_HOME/rdbms/public
include=$ORACLE_HOME/rdbms/demo
include=$ORACLE_HOME/nlsrtl/include
include=$ORACLE_HOME/nlsrtl/public
include=$ORACLE_HOME/network_src/include
include=$ORACLE_HOME/network_src/public
include=$ORACLE_HOME/network/include
include=$ORACLE_HOME/network/public
include=$ORACLE_HOME/plsql/public
ltype=short
PARSE=none
这是所有的配置,我想问问还有什么需要注意的吗,为什么VC中编译通不过那?请高手指点指点啊。感激涕零!!!
define=(WIN32_LEAN_AND_MEAN)
sys_include=($ORACLE_HOME/precomp/public,/usr/include,/home/tuxedo/include)
include=$ORACLE_HOME/precomp/public
include=$ORACLE_HOME/precomp/hdrs
include=$ORACLE_HOME/precomp/LIB
include=$ORACLE_HOME/tpcc2x_2/src
include=$ORACLE_HOME/precomp/include
include=$ORACLE_HOME/oracore/include
include=$ORACLE_HOME/oracore/public
include=$ORACLE_HOME/rdbms/include
include=$ORACLE_HOME/rdbms/public
include=$ORACLE_HOME/rdbms/demo
include=$ORACLE_HOME/nlsrtl/include
include=$ORACLE_HOME/nlsrtl/public
include=$ORACLE_HOME/network_src/include
include=$ORACLE_HOME/network_src/public
include=$ORACLE_HOME/network/include
include=$ORACLE_HOME/network/public
include=$ORACLE_HOME/plsql/public
ltype=short
PARSE=none
这是所有的配置,我想问问还有什么需要注意的吗,为什么VC中编译通不过那?请高手指点指点啊。感激涕零!!!
解决方案 »
- ORACLE中查看执行计划
- oracle 数据记录过滤 最佳性能sql
- linux下有没有TOAD, PL/SQL DEVELOPER之类的软件吗
- 存储过程里面怎么set serveroutput on
- 求教dbms_output.put_line中如何输出制表符等特殊字符?
- 求助:从Windows导入到Aix5.2 出现ORACLE 的 2437等错误
- Oracle数据库的读取如何保证实时性
- Oracle 在 Linux/UNIX 系统下使用什么样的服务器和脚本语言为最完美的搭配?
- 关于连接远程的数据库
- 关于查询的问题
- 怎么给多个列取别名,或是分组。
- ora-06511 游标已经打开(有代码,请高手指点)急!!谢谢
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <time.h>
#include "resource.h"
#include "db_interface.h"
#include "stype.h"
#include "db_stype.h"
#include "oci.h"{
EXEC SQL BEGIN DECLARE SECTION;
PLATFORM_PAIR_TYPE *PlatformPairPtr;
DB_PP_SCALAR_COLUMN *DBPPScalarColumnBuf=NULL, *DBPPScalarColumnPtr;
DB_TIME_PLS **DBTimePLsBuf=NULL, **DBTimePLsPtr;
USHORT i, PlatformPairCount;
EXEC SQL END DECLARE SECTION; boolean CursorOpen=FALSE;
struct sqlca sqlca;
USHORT rc = 0;do { ......... EXEC SQL FOR :PlatformPairCount ALLOCATE :DBTimePLsBuf;////////出错的语句
if ( !!(rc=CheckError(ContextId, sqlca.sqlcode, IDS_DB_ERR_ALLOC_TIME_PLS, __FILE__, __LINE__)) ) {
if ( rc != CONNECT_ERROR )
rc = 0xfc;
break;
}
EXEC SQL DECLARE SqlCursor CURSOR FOR SELECT * FROM performance_level;
EXEC SQL OPEN SqlCursor;
CursorOpen = TRUE;
EXEC SQL FOR :PlatformPairCount FETCH SqlCursor INTO :DBPPScalarColumnBuf, :DBTimePLsBuf;
if ( !!(rc=CheckError(ContextId, sqlca.sqlcode, IDS_DB_ERR_PL_FETCH, __FILE__, __LINE__)) ) {
if ( rc == NO_ENOUGH_DATA )
rc = 0;
else {
if ( rc != CONNECT_ERROR )
rc = 0xfa;
break;
}
} .................. }
}
} while (0);
}stype.h中有定义
{
#ifndef USHORT
#define USHORT unsigned short
#endif
}
db_interface.h中有定义
{
typedef struct _PLATFORM_PAIR_TYPE {
int a;
char b;
} PLATFORM_PAIR_TYPE;
}
db_type.h中有定义
{
typedef OCIArray DB_TIME_PLS;
}
更多的变量定义我就不说了,但是下面的错误信息是在第 70 行, 第 46 列, 文件 .\db_basic.pc 有语义错误:
EXEC SQL FOR :PlatformPairCount ALLOCATE :DBTimePLsBuf;
.............................................1
PCC-S-02420, 不完整的 (或缺少) 类型说明
在第 70 行, 第 36 列, 文件 .\db_basic.pc 有语义错误:
EXEC SQL FOR :PlatformPairCount ALLOCATE :DBTimePLsBuf;
...................................1
PCC-S-02319, 表达式类型与用法不相符
这只是其中的一处错误,不明白有没有说明白,这到底是什么错误那,我差了很多网上的,但是都没解决。
参数parse=none,sqlcheck=syntax,code=cpp
proc userid=spf_syn_sb/spf_syn_sb@ACC2011 include=C:\bea\tuxedo8.1\include include="D:\Software\Visual Studio 6\VC98\Include" include=$(InputDir) sqlcheck=full parse=full iname=$(InputPath)
EXEC SQL END DECLARE SECTION;
包起来,因为我的头文件里定义的结构体,在pc文件里有用到头文件中定义的结构体,因此要把头文件中定义的东西算是全都加入到声明区中去。其他人还有没有意见。