我熟悉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文件(在編譯時在運行安裝依賴庫???)
所以我的問題是:我能做些什麼來編譯我的代碼並獲得某個表中的記錄數?