2012-07-16 154 views
1

这里“EXEC”是一个程序,我从网站上获得的样本:http://www.csee.umbc.edu/portal/help/oracle8/server.815/a68022/sql.htm编译器错误E2451未定义的符号在函数main()

#include <stdio.h> 

/* declare host variables */ 
char userid[12] = "SCOTT/TIGER"; 
char emp_name[10]; 
int emp_number; 
int dept_number; 
char temp[32]; 
void sql_error(); 

/* include the SQL Communications Area */ 
//#include <sqlca.h> 

main() 
{ emp_number = 7499; 
/* handle errors */ 
EXEC SQL WHENEVER SQLERROR do sql_error("Oracle error"); 

/* connect to Oracle */ 
EXEC SQL CONNECT :userid; 
printf("Connected.\n"); 

/* declare a cursor */ 
EXEC SQL DECLARE emp_cursor CURSOR FOR 
SELECT ename 
FROM emp 
WHERE deptno = :dept_number; 

每当编译器获取到EXEC声明编译错误发生:

E2451 SQL.CPP 17:在函数main()

我使用用Borland C未定义符号 'EXEC' ++ VER 5.5.1和SQL 2008 R2。

+0

您是否认为可以修复代码标记? (粘贴您的代码,突出显示它,然后按编辑器上的{}按钮)。 – Flexo 2012-07-16 16:45:01

回答

2

这些SQL语句是无效的C代码,并需要经过编译之前的附加预处理器,它知道如何原始的SQL语句从你的链接转换成C.

开始在前面的章节中,特别是Chapter 1,什么是Oracle预编译器?

+0

我对这篇文章表示歉意,请投票支持我解除禁令。 – 2012-08-08 21:20:09

+0

@StevenAndler对不起,我不明白。你是什​​么意思_提升禁令? – pb2q 2012-08-08 21:22:31

+0

@StevenAndler如果你的意思是你没有优惠特权,那么我只能通过单选票来帮助你。如果您发现任何答案都可以接受,那么您**可以**通过点击答案左侧的选中标记,在投票箭头下方接受答案。请参阅:http://meta.stackexchange.com/a/5235/186209 – pb2q 2012-08-08 21:26:12