2016-11-29 27 views
0

Oracle PL/SQLおよびC/C++言語に精通しており、データベースからデータを取り出し、結果をコンソール/コマンド/出力ストリームに出力するコードを記述できます/等。CXX-E-UNDECLARED、識別子 "exec"は定義されていません

しかし、私はopenVMS開発に精通していません。しかし、私は(オペレーティング・システムに組み込まれて)CXXコンパイラは、コンパイル/リンクし、次のコードを実行した後に動作することを確認することができました。今

#include <stdio.h> 
void main(void) { 
    printif("Hello World!\n"); 
} 

を、私は(Oracleデータベースに接続するために全力を試してみましたこれは同じサーバーにインストールされており、dbからデータを取得するために書き込まれた他の多くの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プログラムを書くことについてオラクルの技術文書に行きましたが、<sqlca.h>などのサンプルコードと<sql_sqlda.h>などのサンプルコードが見つかりましたが、いずれも問題を解決しませんでした。

私は推測しています

(???コンパイル時にその場での依存ライブラリを取り付けることで)何とかEXEC SQL文の世話をする特別なコマンドを使用してコンパイルされる前に書かれた他のCファイルであってもよいですだから私の質問です:私は自分のコードをコンパイルし、特定のテーブル内のレコードの数を取得するために何ができますか?

答えて

0

Cコードには埋め込みSQLがあります。 Oracleの言葉では、これはPro * Cコードです。このコードは、プリコンパイラを介して実行して、埋め込みSQLおよび/またはPL/SQLを通常のCコードに変換する必要があります。

詳細は、Pro*C/C++ documentationを参照してください。

関連する問題