系统配置文件如下: 
sqlcheck=semantics 
userid=scott/scottpwd@orag 
code=c 
cpp_suffix=c 
parse=full 
include=C:\oracle\product\10.1.0\db_1\precomp\public 
include=C:\oracle\product\10.1.0\db_1\OCI\include 
include="C:\Program Files\Microsoft Visual Studio\VC98\Include" 
========================================================================= 
代码如下: 
#include <stdio.h> 
#include <string.h> 
#include <stdlib.h> #include <sqlca.h> void connect(void); 
void plsql(void); 
void sql_error(void); int main(void) 

EXEC SQL WHENEVER SQLERROR DO sql_error(); 
connect(); 
plsql(); 
EXEC SQL COMMIT RELEASE; 
return 0; 
} void connect(void) 

EXEC SQL BEGIN DECLARE SECTION; 
char name[10],pwd[10]; 
EXEC SQL END DECLARE SECTION; 
printf("enter name:"); 
gets(name); 
printf("enter pwd:"); 
gets(pwd); EXEC SQL CONNECT :name IDENTIFIED BY :pwd; 
} void sql_error(void) 

printf("%.*s\n",sqlca.sqlerrm.sqlerrml,sqlca.sqlerrm.sqlerrmc) 
} void plsql(void) 

EXEC SQL BEGIN DECLARE SECTION; 
char name[10],msg[30]; 
int eno; 
float salary; 
int flag=0; 
EXEC SQL END DECLARE SECTION; 
printf("enter empname:"); 
scanf("%s",&eno); 
strcpy(name," "); 
strcpy(msg," "); 
//* 
EXEC SQL EXECUTE 
BEGIN 
select ename ,sal into :name,:salary 
from emp where empno=:eno; 
:flag:=1; 
EXECPTION 
WHEN NO_DATA_FOUND THEN 
:msg:='Have no this empolyee.'; 
END; 
END EXEC; 
if(flag==0) 
printf("%s\n",msg); 
else 
printf("ename:%s,salary:%4.0f\n",name,salary); 
//*/ 

=================================================================== 
错误如下: 
--------------------Configuration: demo02 - Win32 Debug-------------------- 
Performing Custom Build Step on ..\democpp.pc 
Pro*C/C++: Release 10.1.0.2.0 - Production on 星期二 10月 14 23:33:57 2008 
Copyright (c) 1982, 2004, Oracle.  All rights reserved. 
系统默认选项值取自于:  C:\oracle\product\10.1.0\db_1\precomp\admin\pcscfg.cfg 
错误发生在行66, 列2, 文件\Study\vc60_oracle\democpp.pc 

.1 
PCC-S-02022, 在扫描 SQL 语句时发现文件结束标志 
错误发生在行0, 列0, 文件\Study\vc60_oracle\democpp.pc 
PCC-F-02102, C 预处理时, 发生严重错误 
Error executing c:\windows\system32\cmd.exe. democpp.c - 1 error(s), 0 warning(s) 
==================================================== 
那一位高手能解决? 
十分感谢!!!! 

解决方案 »

  1.   

    请教楼主,你这些在c++在嵌入sql的代码,应用在什么地方?做什么系统用这个东东是最为方便的?
      

  2.   

    长见识了,很少看到这种用法..
    不过为什么不把pl sql写在后台去调用呢,不是更方便?
    楼主的问题会不会是版本不兼容的问题,
      

  3.   

    你们见过:
    《精通Oracle 10g Pro*C/C++编程》
    这本书吗?
    以上代码原于它。嵌入pl/sql的代码块为了编程灵活。我安装的版本是:Pro*C/C++: Release 10.1.0.2.0
    此书上用的也是此版本。
    为什么我的就不能用呢!
    各位,有什么好的解决办法吗?
    我在期待!!!
      

  4.   

    再关注一下,楼主上面提示66行有错误你调度过没有,代码有没有问题.
    include="C:\Program Files\Microsoft Visual Studio\VC98\Include" 
    这个路径是VC的路径,跟你的Pro*C/C++的路径是一样的吗?会不会是路径有问题.
      

  5.   

    5楼:
    Pro*C/C++的路径是什么?
    我的oracle10.1安装时有Pro*C/C++组件,
    可是安装完后所有可见的项中找不着,
    你能给出Pro*C/C++的路径吗?
    谢谢!!!