表17-2に、オブジェクト・サポートのための新たなデータベース型を示します。
表17-2 Pro*C/C++での新しいデータベース型の使用
操作データベース型 | DECLARE | ALLOCATE | FREE | MANIPULATE |
---|---|---|---|---|
オブジェクトのタイプ |
ホスト: OTTで生成されたC言語の構造体へのポインタ インジケータ: OTTで生成されたインジケータ構造体へのポインタ |
連想アクセス用インタフェース: EXEC SQL ALLOCATE ナビゲーショナル・アクセス用インタフェース: EXEC SQL OBJECT CREATE ... EXEC SQL OBJECT DEREF ホスト変数およびインジケータのためのメモリーをオブジェクト・キャッシュに割り当てます。 |
EXEC SQL FREEまたはEXEC SQL CACHE FREE ALLを使用して解放するか、セッションの終わりに自動的に解放します。 |
C言語のポインタを間接参照(DEREF)して各属性を取得します。操作方法は属性の型によって異なります(次を参照)。 |
COLLECTIONオブジェクト・タイプ (NESTED TABLEおよび可変長配列) |
ホスト: OTTで生成されたC言語の構造体へのポインタ インジケータ: OCIInd |
EXEC SQL ALLOCATE ホスト変数のためのメモリーをオブジェクト・キャッシュに割り当てます。 |
EXEC SQL FREEまたはEXEC SQL CACHE FREE ALLを使用して解放するか、セッションの終わりに自動的に解放します。 |
OCIColl*関数(oci.hに定義)を使用して、各要素を取得または設定します。コレクションも参照してください。 |
REF |
ホスト: OTTで生成されたC言語の構造体へのポインタ インジケータ: OCIInd |
EXEC SQL ALLOCATE ホスト変数のためのメモリーをオブジェクト・キャッシュに割り当てます。 |
EXEC SQL FREEまたはEXEC SQL CACHE FREE ALLを使用して解放するか、セッションの終わりに自動的に解放します。 |
EXEC SQL OBJECT DEREFを使用します。 ナビゲーショナル・アクセス用インタフェースでEXEC SQL OBJECT SET/GETを使用します。 |
LOB |
ホスト: OCIBlobLocator *、OCIClobLocator *またはOCIBfileLocator * インジケータ: OCIInd |
EXEC SQL ALLOCATE を使用してホスト変数用のメモリーをユーザー・ヒープ内で割り当てます。 malloc()。 |
EXEC SQL FREEを使用して解放するか、すべてのPro*C/C++接続のクローズ時に自動的に解放します。EXEC SQL CACHE FREE ALLでは、オブジェクトのLOB属性のみ解放されます。 |
または、dbms_lobパッケージの埋込みPL/SQLストアド・プロシージャを使用するか、あるいは oci.hに定義されているOCILob*関数を使用します。 LOBも参照してください。 |
注意: Pro*C/C++では、これらの型のホスト配列は、SQLのバルク・フェッチまたはバルク挿入操作で宣言および使用できます。 |
- |
- |
- |
- |
表17-3に、Pro*C/C++での新たなC言語のデータ型の利用方法を示します。
表17-3 Pro*C/C++での新たなC言語のデータ型の使用
操作C言語のデータ型 | DECLARE | ALLOCATE | FREE | MANIPULATE |
---|---|---|---|---|
OCIDate |
ホスト: OCIDate * インジケータ: OCIInd |
EXEC SQL ALLOCATE ホスト変数のためのメモリーをオブジェクト・キャッシュに割り当てます。 |
EXEC SQL FREEまたはEXEC SQL CACHE FREE ALLを使用して解放するか、セッションの終わりに自動的に解放します。 |
(1)oci.hに定義されたOCIDate*関数を使用します。 (2)EXEC SQL OBJECT GET/SETを使用します。または (3)oci.hに定義されているOCINumber*関数を使用します。 |
OCINumber |
ホスト: OCINumber * インジケータ: OCIInd |
EXEC SQL ALLOCATE ホスト変数のためのメモリーをオブジェクト・キャッシュに割り当てます。 |
EXEC SQL FREEまたはEXEC SQL CACHE FREE ALLを使用して解放するか、セッションの終わりに自動的に解放します。 |
(1)EXEC SQL OBJECT GET/SETを使用します。または (2)oci.hに定義されているOCINumber*関数を使用します。 |
OCIRaw |
ホスト: OCIRaw * インジケータ: OCIInd |
EXEC SQL ALLOCATE ホスト変数のためのメモリーをオブジェクト・キャッシュに割り当てます。 |
EXEC SQL FREEまたはEXEC SQL CACHE FREE ALLを使用して解放するか、セッションの終わりに自動的に解放します。 |
oci.hに定義されているOCIRaw*関数を使用します。 |
OCIString |
ホスト: OCIString * インジケータ: OCIInd |
EXEC SQL ALLOCATE ホスト変数のためのメモリーをオブジェクト・キャッシュに割り当てます。 |
EXEC SQL FREEまたはEXEC SQL CACHE FREE ALLを使用して解放するか、セッションの終わりに自動的に解放します。 |
(1)EXEC SQL OBJECT GET/SETを使用します。または (2)oci.hに定義されているOCIString*関数を使用します。 |
注意: Pro*C/C++では、これらの型のホスト配列は、SQLのバルク・フェッチまたはバルク挿入操作で使用できない場合があります。 |
- |
- |
- |
- |
Oracle8での新しいデータ型は、REF、BLOB、NCLOB、CLOBおよびBFILEです。これらの型は、オブジェクト内またはリレーショナル列に使用することができます。どちらの場合も、Cバインドに従ってホスト変数にマップされます。
関連項目:
Cバインドについては、Pro*C/C++の新しいデータベース型の概要を参照してください。