2016-11-29 269 views
0

我熟悉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文件(在編譯時在運行安裝依賴庫???)

所以我的問題是:我能做些什麼來編譯我的代碼並獲得某個表中的記錄數?

回答

0

你有什麼在你的C代碼中嵌入SQL。用Oracle的說法,這是Pro * C代碼,它首先需要通過預編譯器運行,以將嵌入式SQL和/或PL/SQL轉換爲常規C代碼。

有關更多信息,請參閱Oracle Pro*C/C++ documentation

相關問題