4.5 Pro*C/C++

Oracle Pro*C/C++プリコンパイラを使用すると、プログラマはユーザー定義データ型をCプログラムおよびC++プログラムで使用できます。

内容は次のとおりです。

4.5.1 Pro*C/C++について

Pro*C開発者は、Object Type Translatorを使用して、Oracleオブジェクト型およびコレクションを、Pro*Cアプリケーションで使用できるCのデータ型にマップできます。

Pro*Cでは、コンパイル時のオブジェクト型とコレクションのタイプ・チェック、およびデータベースのデータ型からCのデータ型への自動型変換が行われます。

Pro*Cには、オブジェクトを作成および破棄するためのEXEC SQL構文が含まれており、次の2つを使用してサーバーにあるオブジェクトにアクセスできます。

  • Pro*Cプログラム内に埋め込まれたSQL文およびPL/SQLファンクションまたはプロシージャ。

  • オブジェクト・キャッシュへのインタフェース(「Oracle Call Interface (OCI)」を参照)。この場合、オブジェクトにはポインタを介してアクセスし、サーバー上で変更および更新できます。

    関連項目:

    Pro*C/C++プリコンパイラの詳細は、『Pro*C/C++プログラマーズ・ガイド』を参照してください。

4.5.2 Pro*C/C++での連想アクセス

Pro*C/C++では、オブジェクトの連想アクセスに対して次の機能が提供されます。

  • オブジェクト・キャッシュに割り当てられたオブジェクトの一時コピーのサポート

  • 埋込みSQLのINSERTUPDATEDELETE文、またはSELECT文のWHERE句の入力ホスト変数として参照されるオブジェクトの一時コピーのサポート

  • 埋込みSQLのSELECTおよびFETCH文で出力ホスト変数として参照されるオブジェクトの一時コピーのサポート

  • オブジェクトの型およびスキーマ情報を取得するためにDESCRIBE文を介してオブジェクト型を参照する、ANSI動的SQL文のサポート

関連項目:

連想アクセスのバックグラウンド情報については、「OCIプログラムにおける連想アクセス」を参照してください。

4.5.3 Pro*C/C++でのナビゲーショナル・アクセス

Pro*C/C++では、オブジェクトに対してさらにオブジェクト指向のインタフェースをサポートするために、次の機能が提供されます。

  • 埋込みSQLのOBJECT DEREF文を使用した、オブジェクト・キャッシュでのオブジェクトの参照解除、確保およびロック(オプション)のサポート

  • オブジェクトが更新または削除された場合、または不要になった場合に、Pro*C/C++ユーザーが埋込みSQLのOBJECT UPDATEOBJECT DELETEおよびOBJECT RELEASE文を使用してオブジェクト・キャッシュに通知できる機能

  • 埋込みSQLのOBJECT CREATE文を使用して、オブジェクト・キャッシュに新しい参照可能オブジェクトを作成するための機能

  • オブジェクト・キャッシュでの変更を、埋込みSQLのOBJECT FLUSH文を使用してサーバーにフラッシュするための機能

関連項目:

ナビゲーショナル・アクセスのバックグラウンド情報については、「OCIプログラムのナビゲーショナル・アクセス」を参照してください。

4.5.4 Oracle型とCのデータ型間の変換

Pro*C/C++では、CおよびC++アプリケーションでOCI型を簡単に使用できるように、使いやすく拡張されています。

Oracle Type Translator (OTT)によって生成されるオブジェクトのC表現では、不透明で内部形式の変更が見えなくなりますが、CまたはC++アプリケーションで使用するのに扱いにくいOCI型が使用されます。このような表現には、スカラー属性に対するOCIStringおよびOCINumberや、コレクション型やオブジェクト参照に対するOCITable型、OCIArray型およびOCIRef型があります。

Pro*C/C++での拡張は次のとおりです。

  • 埋込みSQLのOBJECT GET文を使用することで、オブジェクト属性を取得し暗黙的にCのデータ型に変換可能。

  • 埋込みSQLのOBJECT SET文を使用することで、オブジェクト属性をCのデータ型で設定可能。

  • 埋込みSQLのCOLLECTION GET文を使用することで、コレクションをホスト配列にマップ可能。さらに、コレクションがスカラー型で構成されている場合、OCI型は、暗黙的にCのデータ型に変換されます。

  • 埋込みSQLのCOLLECTION SET文を使用することで、ホスト配列でコレクションの要素を更新可能。COLLECTION GET文と同様、コレクションがスカラー型で構成されている場合、Cのデータ型は、暗黙的にOCI型に変換されます。

4.5.5 Oracle Type Translator(OTT)

Oracle Type Translator (OTT)は、オブジェクト型に対応するCの構造体を自動的に生成するプログラムです。

OTTは、Pro*CプリコンパイラおよびOCIサーバー・アクセス・パッケージをさらに使用しやすくします。

関連項目:

OTTの詳細は、『Oracle Call Interfaceプログラマーズ・ガイド』および『Pro*C/C++プログラマーズ・ガイド』を参照してください。