Pro*C/C++アプリケーションの作成時の型の変換処理は、OCIベースのアプリケーションの作成時よりも簡単です。これは、プリコンパイラで生成されるコードによって自動的にタイプ・バージョン表が初期化されるためです。
Pro*C/C++アプリケーションでは、OTTによって生成されるC言語のヘッダー・ファイルを使用して、データベース・サーバーのオブジェクトにアクセスできます。このヘッダー・ファイルは、#include
文によりコードに組み込まれます。ヘッダー・ファイルをインクルードした後は、Pro*C/C++アプリケーションからホスト言語形式でオブジェクト・データにアクセスしたり、オブジェクト・データを操作したりできます。
図19-2は、Pro*C/C++でOTTを使用する場合に必要な手順を示しています。
SQLを使用してデータベースに型定義を作成します。
OTTで、オブジェクト型、REF型および名前付きコレクション型のC表現を含むヘッダー・ファイルを生成します。INTYPE
パラメータとしてPro*C/C++に渡されるOUTTYPE
ファイルも生成されます。
ヘッダー・ファイルをPro*C/C++ソース・コード・ファイルにインクルードします。
Pro*C/C++アプリケーションをコンパイルし、Pro*C/C++のランタイム・ライブラリSQLLIBにリンクします。
Pro*C/C++実行可能ファイルをOracleサーバーで実行します。
前述の手順2が示すように、OTTによって生成されるOUTTYPE
ファイルは、Pro*C/C++プログラマにとって特別な用途があります。Pro*C/C++の起動時に、OUTTYPE
ファイルを新しいINTYPE
コマンドライン・パラメータに渡します。このファイルの内容は、OTT生成の構造体に対応付けるデータベース型を決定するためにプリコンパイラで使用されます。OCIでプログラミングしている場合は、バインド、定義および型情報へのアクセスのための特別な関数を使用して、この対応付けを明示的に行う必要があります。
また、プリコンパイラにより、OTTのOUTTYPE
(Pro*C/C++のINTYPE
)ファイルで名前が付けられた型を使用して、タイプ・バージョン表を初期化するコードが生成されます。
注意:
常にOTTからのOUTTYPE
ファイルをPro*C/C++のINTYPE
ファイルとして使用することをお薦めします。Pro*C/C++のINTYPE
ファイルを作成することも可能ですが、エラーが発生する可能性もあるためお薦めしません。
サーバーから取り出されたオブジェクトの属性を操作するには、OCIのデータ型のマッピングと操作のための関数をコールするのも1つの方法です。これを実行する前に、アプリケーションで、まずSQLEnvGet()
をコールしてOCI関数に渡すOCI環境ハンドルを取得し、次にSQLSvcCtxGet()
をコールしてOCI関数に渡すOCIサービス・コンテキストを取得する必要があります。Pro*C/C++には、オブジェクト属性の操作に使用できる機能もあります。詳細はオブジェクトを参照してください。
Pro*C/C++からOCI関数をコールするプロセスの概要は、OCIによるオブジェクトのアクセスおよび操作についてを、詳細はOracle Call Interfaceプログラマーズ・ガイドの第8章を参照してください。