CXX-E-UNDECLARED,标识符“exec”未定义
问题描述:
我熟悉Oracle PL/SQL和C/C++语言,我可以编写从数据库中提取数据并将结果输出到控制台/命令/输出流的代码/等等。CXX-E-UNDECLARED,标识符“exec”未定义
但是,我不熟悉openVMS的开发。但我能确认CXX
编译器(内置于操作系统)编译/链接和运行下面的代码后,工作原理:
#include <stdio.h>
void main(void) {
printif("Hello World!\n");
}
现在,我想我最好的连接到Oracle数据库(它安装在同一台服务器上,并且还有许多其他C/CP文件被写入来从数据库中提取数据并且工作正常),但我无法编译任何试图从数据库中读取的代码。为简单起见,这里是试图访问数据库的代码:
#include<stdio.h>
void main(void) {
int cnt = -1;
exec sql SELECT count(*) INTO :cnt FROM EMPLOYEES;
printif("Number of employees: %d", cnt);
}
当我编译,我得到:
%CXX-E-UNDECLARED, identifier "exec" is undefined
起初,我以为我可能会丢失在图书馆头,所以我尝试了以下内容:
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#ifdef PC
#include <fcntl.h>
#else
#include <unixio.h>
#include <file.h>
#endif
#include <ctype.h>
但没有上述库导致编译器停止抱怨exec sql
statetment。
我去了关于在openVMS上编写C程序的Oracle技术文档,发现一些示例代码包括<sqlca.h>
和其他像<sql_sqlda.h>
但其中没有一个解决了我的问题。
我猜想,可能是一个特殊的命令,负责EXEC SQL语句在某种程度上编译之前写的其他的C文件(在编译时在运行安装依赖库???)
所以我的问题是:我能做些什么来编译我的代码并获得某个表中的记录数?
答
你有什么在你的C代码中嵌入SQL。用Oracle的说法,这是Pro * C代码,它首先需要通过预编译器运行,以将嵌入式SQL和/或PL/SQL转换为常规C代码。
有关更多信息,请参阅Oracle Pro*C/C++ documentation。