include
EXEC SQL include 和 include 有什么区别?
[解决办法]
EXEC SQL INCLUDE SQLCA;
#include <sqlca.h>
这个效果是一样的。
但是二者还是有所不同
#include "foo.h"
在C的预处理阶段才会处理foo.h, 所以foo.h里只能有c的语句
EXEC SQL INCLUDE "foo.h"
在ESQL预处理阶段就会处理 foo.h, 所以 foo.h 里可以有 ESQL语句
下面的例子里需要在ESQL语句里使用foo.h定义的一个结构体,所以在foo.h里是有ESQL语句的,所以在foo.c里需要用
EXEC SQL INCLUDE "foo.h";
不能用
#include "foo.h"
/**
* @file foo.h
* @brief
*/
EXEC SQL BEGIN DECLARE SECTION;
struct foo {
char name[10 + 1];
int count;
};
EXEC SQL END DECLARE SECTION;
/**
* @file foo.ec
* @brief
*/
EXEC SQL INCLUDE "foo.h";
int main(int argc, char *argv[])
{
EXEC SQL BEGIN DECLARE SECTION;
struct foo foo;
EXEC SQL END DECLARE SECTION;
EXEC SQL SELECT COUNT(*) INTO :foo.count FROM T;
return 0;
}