- 论坛徽章:
- 0
|
请问高手一个pro*c预编译问题。
我现在的系统环境是Solaris9 + Oracle8.1.7,安装了gcc 3.3.2 for Solaris 9 Intel包。写了一段pro*c的程序(不存在语法问题,是以前开发过的项目,只不过是在windows环境下开发的),打算实现在Solaris下面也能正常编译运行。
×××××××××××××××××××××××××××××××××××
1.以下是对应的.pc原程序部分代码:
EXEC SQL
SELECT MESENAIYOU
INTO :sMESENAIYOU
FROM MS_MSG
WHERE MESE_CD = :msg;
×××××××××××××××××××××××××××××××××××
2.以下是以前在windows下面编译后的.c文件对应的代码:
/* EXEC SQL
SELECT MESENAIYOU
INTO :sMESENAIYOU
FROM MS_MSG
WHERE MESE_CD = :msg; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 10;
sqlstm.arrsiz = 2;
sqlstm.sqladtp = &
sqlstm.sqltdsp = &
sqlstm.stmt = "select MESENAIYOU into :b0 from MS_MSG where MESE_CD=:b1";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )69;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)sMESENAIYOU;
sqlstm.sqhstl[0] = (unsigned int )161;
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)msg;
sqlstm.sqhstl[1] = (unsigned int )0;
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}
×××××××××××××××××××××××××××××××××××
3.现在的问题是我在Solaris下预编译后,生成了对应的.c文件,但是那部分sql语句并没有发生任何变化。这样一来,在接下来用gcc进行编译的时候肯定会出问题的。
/usr/local/bin/cpp xxxx.pc -o xxxx.c -I /oracle/precomp/public
我怀疑是这句命令写的不对,请高手帮忙指点一下。 |
|