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

前
次

OBJECT GETおよびSET

OBJECT SETおよびOBJECT GETというナビゲーショナル文を使用すると、コレクション属性および定義したオブジェクト型の取出しおよび更新を行うことができます。

次の場合にオブジェクト型の要素に対してOBJECT GET文を実行すると、オブジェクトのすべての属性がホスト変数に取り出されます。

 '*' | {attr [, attr]}  FROM 

句が省略されるかOBJECT GET * FROMが使用される場合。

EXEC SQL [AT [:]database] 
   OBJECT GET [  '*' | {attr [,attr]}  FROM]
      :object [[INDICATOR] :object_ind]
         INTO {:hv [[INDICATOR] :hv_ind]
            [,:hv [[INDICATOR] :hv_ind]]} ;

次の場合にOBJECT SET文を実行すると、オブジェクトのすべての属性に対してホスト変数を使用した更新が行われます。

 '*' | {attr, [, attr]}  OF

句が省略されるかOBJECT SET * OFが使用される場合。

EXEC SQL [AT [:]database] 
   OBJECT SET [  '*' | {attr [, attr]} OF]
     :object [INDICATOR] :object_ind]
        TO {:hv [[INDICATOR] :hv_ind]
            [,:hv [[INDICATOR] :hv_ind]]} ;

関連項目:

OBJECT GET文およびOBJECT SET文の詳細は、オブジェクト属性とC言語のデータ型の変換を参照してください。

この表は、これら2つの文でオブジェクトとコレクション型をどのようにマッピングするかを示しています。

表18-1 オブジェクト属性およびコレクション属性

属性タイプ 記述 ホスト・データ型

オブジェクト

OTT生成の構造体

OTT構造体へのポインタ

コレクション

OCIArray、OCITable (OCIColl)

OCIArray *、OCITable * (OCIColl *)

オブジェクトまたはコレクションは、バインドされる属性と型互換性を持つ必要があります。コレクション属性の型互換性は両方がVARRAYまたはNESTED TABLEのいずれかで、その要素型に互換性がある場合にかぎり保たれます。

次の表は2つのコレクション型の要素でどのように互換性を保てるかを示しています。

表18-2 コレクションおよびホスト配列で可能な型変換

コレクション要素の型 記述 ホスト・データ型

CHAR、VARCHAR、VARCHAR2

OCIString

STRING、VARCHAR、CHARZ、OCIString

REF

OCIRef

OCIRef

INTEGER、SMALLINT、INT

OCINumber

int、short、OCINumber

NUMBER、NUMERIC、REAL、FLOAT、DOUBLE PRECISION

OCINumber

INT、FLOAT、DOUBLE、OCINumber

DATE

OCIDate

STRING、VARCHAR、CHARZ、OCIDate

REFが参照するオブジェクトは、バインドされるREFと型互換性を持つ必要があります。

これらの表の場合、OBJECT GETでは「記述」列に指定された形式が使用され、左端のデータベース型から「ホスト・データ型」列の形式を使用する内部データ型に変換されます。OBJECT SETでは逆の変換が行われます。

明示的タイプ・チェックはサポートされません

プリコンパイラでは、コレクション要素データ型とホスト変数データ型間のバインド時の、明示的タイプ・チェックはサポートされません。タイプ・チェックは実行時に行われます。