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

前
次

REFの使用について

REF型はオブジェクト自体ではなく、オブジェクトの参照を示します。REF型はリレーショナル列のみでなく、オブジェクト型の属性としても指定できます。

REFのC言語の構造体の生成

オブジェクト型のREFのC言語での表現は、OTTにより型の変換中に生成されます。たとえば、データベース内のユーザー定義型PERSONの参照は、C言語では「Person_ref」型で示されます。正確な型名は型変換時に有効なOTTオプションで決定されます。OTTにより生成された型ファイルは、Pro*C/C++のINTYPEプリコンパイラ・オプションで指定する必要があります。また、OTTにより生成されたヘッダーは、#includeを使用してPro*C/C++プログラムに組み込む必要があります。このスキームにより、REF型に対する適切なタイプ・チェックがPro*C/C++のプリコンパイル中に間違いなく実行されます。

REF型では、OTTで特殊なインジケータ構造体を生成する必要がありません。かわりに、2バイトの符号付きスカラー・インジケータが使用されます。

REFの宣言

Pro*C/C++でREF型を表すホスト変数は、該当するOTT生成の型へのポインタとして宣言する必要があります。

オブジェクト型とは異なり、REF型を表す標識変数は、2バイトの符号付きスカラー型OCIIndとして宣言されます。標識変数は本来オプションですが、Pro*C/C++で宣言された各ホスト変数に対してそれぞれ1つずつ指定するようにプログラミングしてください。

埋込みSQLでのREFの使用

REF型は、オブジェクト・キャッシュに格納されています。ただし、REF型を表すインジケータはスカラーであるため、キャッシュには割り当てられていません。このインジケータは通常ユーザー・スタックに格納されています。

REF型を表すホスト構造体を埋込みSQL文で指定する前に、EXEC SQL ALLOCATEコマンドを使用してオブジェクト・キャッシュ内の領域を割り当ててください。使用後は、EXEC SQL FREEまたはEXEC SQL CACHE FREE ALLコマンドを自由に使用できます。

関連項目:

これらの文については、ナビゲーショナル・アクセス用インタフェースを参照してください。

スカラー標識変数用のメモリーはオブジェクト・キャッシュに割り当てられていないため、REF型を表すインジケータはALLOCATEコマンドおよびFREEコマンドには使用できません。OCIIndとして宣言されたスカラー・インジケータはプログラム・スタックに格納されています。ALLOCATE文を指定すれば、実行時に、指定されたホスト変数のための領域がオブジェクト・キャッシュに割り当てられます。ナビゲーショナル・アクセス用インタフェースでは、C割当てではなく、EXEC SQL GETとEXEC SQL SETを使用してください。

Pro*C/C++では、関連するSQL文および埋込みPL/SQLブロックでのREFホスト変数の指定がサポートされています。