プライマリ・コンテンツに移動
Pro*C/C++プログラマーズ・ガイド
12c リリース1(12.1)
B71397-03
目次へ移動
目次
索引へ移動
索引

前
次

Pro*C/C++アプリケーションでのOTTの使用について

Pro*C/C++アプリケーションの作成時の型の変換処理は、OCIベースのアプリケーションの作成時よりも簡単です。これは、プリコンパイラで生成されるコードによって自動的にタイプ・バージョン表が初期化されるためです。

Pro*C/C++アプリケーションでは、OTTによって生成されるC言語のヘッダー・ファイルを使用して、データベース・サーバーのオブジェクトにアクセスできます。このヘッダー・ファイルは、#include文によりコードに組み込まれます。ヘッダー・ファイルをインクルードした後は、Pro*C/C++アプリケーションからホスト言語形式でオブジェクト・データにアクセスしたり、オブジェクト・データを操作したりできます。

図19-2は、Pro*C/C++でOTTを使用する場合に必要な手順を示しています。

  1. SQLを使用してデータベースに型定義を作成します。

  2. OTTで、オブジェクト型、REF型および名前付きコレクション型のC表現を含むヘッダー・ファイルを生成します。INTYPEパラメータとしてPro*C/C++に渡されるOUTTYPEファイルも生成されます。

  3. ヘッダー・ファイルをPro*C/C++ソース・コード・ファイルにインクルードします。

  4. Pro*C/C++アプリケーションをコンパイルし、Pro*C/C++のランタイム・ライブラリSQLLIBにリンクします。

  5. Pro*C/C++実行可能ファイルをOracleサーバーで実行します。

図19-2 オブジェクト指向Pro*C/C++アプリケーションの作成

オブジェクト指向Pro*C/C++アプリケーションの作成
「図19-2 オブジェクト指向Pro*C/C++アプリケーションの作成」の説明

前述の手順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章を参照してください。