ヘッダーをスキップ
Oracle® Call Interfaceプログラマーズ・ガイド
11g リリース2 (11.2)
E50264-03
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

OCIの型情報アクセッサ関数

表18-11は、この項で説明しているOCIの型情報アクセッサ関数を示しています。

表18-11 型情報アクセッサ関数

関数 用途

「OCITypeArrayByName()」


オブジェクト名配列の指定時にTDO配列を取得します。

「OCITypeArrayByRef()」


オブジェクト参照配列の指定時にTDO配列を取得します。

「OCITypeByName()」


オブジェクト名の指定時にTDOを取得します。

「OCITypeByRef()」


オブジェクト参照の指定時にTDOを取得します。


OCITypeArrayByName()

用途

名前配列の指定時に型配列を取得します。

構文

sword OCITypeArrayByName ( OCIEnv             *envhp,
                           OCIError           *errhp,
                           const OCISvcCtx    *svc,
                           ub4                array_len,
                           const OraText      *schema_name[],
                           ub4                s_length[],
                           const OraText      *type_name[],
                           ub4                t_length[],
                           const OraText      *version_name[],
                           ub4                v_length[],
                           OCIDuration        pin_duration,
                           OCITypeGetOpt      get_option,
                           OCIType            *tdo[] );

パラメータ

envhp (IN/OUT)

オブジェクト・モードで初期化されたOCI環境ハンドルです。詳細は、OCIEnvCreate()OCIEnvNlsCreate()およびOCIInitialize() (非推奨)の説明を参照してください。

errhp (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

svc (IN)

OCIサービス・ハンドルです。

array_len (IN)

取り出されるschema_nametype_nameまたはversion_nameエントリの数です。

schema_name (IN、オプション)

取得される型に関連付けられているスキーマ名の配列です。この配列を指定する場合は、array_len個の要素が必要です。0 (ゼロ)を指定すると、デフォルト・スキーマが想定されます。指定しない場合、schema_nameの要素数をarray_lenにする必要があります。1つ以上のエントリでデフォルト・スキーマが必要であることを示す場合は、これらのエントリに対してゼロ(0)を指定します。

s_length (IN)

schema_name配列の対応するschema_nameエントリの長さに対応する各エントリを持つschema_nameの配列の長さです(バイト単位)。配列の要素数はarray_lenまたは0 (ゼロ) (schema_nameが指定されていない場合)のいずれかにする必要があります。

type_name (IN)

取り出される型の名前の配列です。array_len個の要素が必要です。

t_length (IN)

type_name配列にある型名のバイト単位の長さの配列です。

version_name (IN)

バージョン名は無視され、要求された型の最新バージョンが戻されます。リリース9.0以上は型の変更が可能であったため、それより前のリリースのアプリケーションで変更された型にアクセスすると、エラーが発生します。この場合は、最新の型定義を使用して、アプリケーションの変更、再コンパイルおよび再リンクを行う必要があります。

取り出される型に対応するバージョン名の配列です。この配列は、最新バージョンの取出しを示す0 (ゼロ)にするか、またはarray_len個の要素が必要です。

0 (ゼロ)を指定すると、最新のバージョンが想定されます。指定しない場合、要素数をarray_lenにする必要があります。1つ以上のエントリで最新のバージョンが必要であることを示す場合は、これらのエントリに対してゼロ(0)を指定します。

v_length (IN)

version_name配列にあるバージョン名のバイト単位の長さの配列です。

pin_duration (IN)

取り出された型用の確保継続時間(たとえば、カレント・トランザクションの終わりまで)です。各オプションの説明は、oro.hを参照してください。

get_option (IN)

型をロードする場合のオプションです。値は次の2つのうちのいずれかです。

  • OCI_TYPEGET_HEADER (ヘッダーのみがロードされる)

  • OCI_TYPEGET_ALL (TDOおよびすべてのADOとMDOがロードされる)

tdo (OUT)

オブジェクト・キャッシュに確保された各型へのポインタ用出力配列です。これには、array_lenポインタ用の領域が必要です。OCIObjectGetObjectRef()を使用して、確保された各型記述子に対するCREFを取得します。

コメント

スキーマまたは型名配列に対応付けられている既存の型のポインタを取得します。

get_optionパラメータを使用すると、各ラウンドトリップごとにロードされるTDOの部分を制御できます。

この関数は、必須パラメータにNULLがある場合、あるいはスキーマ名または型名に対応付けられたオブジェクト型が存在しない場合はエラーを戻します。

配列ではなく単一の型を取り出すには、OCITypeByName()を使用します。


注意:

この関数で取得されたTDO (TDOまたは表定義の配列)は、渡されたサービス・ハンドル(接続)に対応するキャッシュの論理パーティションに属します。TDOまたは表が論理パーティション間で使用される場合、動作は不明であり、リリースによって変化する可能性があります。

OCITypeArrayByRef()

用途

参照配列の指定時に型配列を取得します。

構文

sword OCITypeArrayByRef ( OCIEnv           *envhp,
                          OCIError         *errhp,
                          ub4              array_len,
                          const OCIRef     *type_ref[],
                          OCIDuration      pin_duration,
                          OCITypeGetOpt    get_option,
                          OCIType          *tdo[] );

パラメータ

envhp (IN/OUT)

オブジェクト・モードで初期化されたOCI環境ハンドルです。詳細は、OCIEnvCreate()OCIEnvNlsCreate()およびOCIInitialize() (非推奨)の説明を参照してください。

errhp (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

array_len (IN)

取り出されるschema_nametype_nameまたはversion_nameエントリの数です。

type_ref (IN)

取り出される型記述子オブジェクトの特定のバージョンを指し示すOCIRef*の配列です。この配列を指定する場合は、array_len個の要素が必要です。

pin_duration (IN)

取り出された型用の確保継続時間(たとえば、カレント・トランザクションの終わりまで)です。各オプションの説明は、oro.hを参照してください。

get_option (IN)

型をロードする場合のオプションです。値は次の2つのうちのいずれかです。

  • OCI_TYPEGET_HEADER (ヘッダーのみがロードされる)

  • OCI_TYPEGET_ALL (TDOおよびすべてのADOとMDOがロードされる)

tdo (OUT)

オブジェクト・キャッシュに確保された各型へのポインタ用出力配列です。これには、array_lenポインタ用の領域が必要です。OCIObjectGetObjectRef()を使用して、確保された各型記述子に対するCREFを取得します。

コメント

スキーマまたは型名配列に対応付けられている既存の型のポインタを取得します。

この関数は、次の場合にエラーを戻します。

  • 必須パラメータにNULLがある場合

  • スキーマまたは型名エントリに対応付けられている1つ以上のオブジェクト型が存在しない場合

型の配列ではなく、単一の型を取り出すには、OCITypeByRef()を使用します。


注意:

この関数で取得されたTDO (TDOまたは表定義の配列)は、渡されたサービス・ハンドル(接続)に対応するキャッシュの論理パーティションに属します。TDOまたは表が論理パーティション間で使用される場合、動作は不明であり、リリースによって変化する可能性があります。

OCITypeByName()

用途

既存の型の最新バージョンを名前を指定して取得します。

構文

sword OCITypeByName ( OCIEnv               *env,
                      OCIError             *err, 
                      const OCISvcCtx      *svc, 
                      const OraText        *schema_name,
                      ub4                  s_length, 
                      const OraText        *type_name, 
                      ub4                  t_length, 
                      const OraText        *version_name,
                      ub4                  v_length,
                      OCIDuration          pin_duration,
                      OCITypeGetOpt        get_option
                      OCIType              **tdo );

パラメータ

env (IN/OUT)

オブジェクト・モードで初期化されたOCI環境ハンドルです。詳細は、OCIEnvCreate()OCIEnvNlsCreate()およびOCIInitialize() (非推奨)の説明を参照してください。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

svc (IN)

OCIサービス・ハンドルです。

schema_name (IN、オプション)

型に関連付けられているスキーマの名前です。デフォルトでは、ユーザーのスキーマ名が使用されます。この文字列はすべて大文字であることが必要です。それ以外の場合は、OCIで内部エラーが発生してプログラムが停止します。

s_length (IN)

schema_name パラメータの長さ(バイト単位)です。

type_name (IN)

取得する型の名前です。この文字列はすべて大文字であることが必要です。それ以外の場合は、OCIで内部エラーが発生してプログラムが停止します。

t_length (IN)

type_name パラメータの長さ(バイト単位)です。

version_name (IN)

バージョン名は無視され、要求された型の最新バージョンが戻されます。リリース9.0以上は型の変更が可能であったため、それより前のリリースのアプリケーションで変更された型にアクセスすると、エラーが発生します。この場合は、最新の型定義を使用して、アプリケーションの変更、再コンパイルおよび再リンクを行う必要があります。

ユーザーが読取り可能な、型のバージョンです。最新のバージョンを取り出すには、(text *) 0を渡します。

v_length (IN)

version_nameのバイト単位の長さです。

pin_duration (IN)

確保継続時間です。

get_option (IN)

型をロードする場合のオプションです。値は次の2つのうちのいずれかです。

  • OCI_TYPEGET_HEADER (ヘッダーのみがロードされる)

  • OCI_TYPEGET_ALL (TDOおよびすべてのADOとMDOがロードされる)

tdo (OUT)

オブジェクト・キャッシュに確保された型へのポインタです。

コメント

この関数は、スキーマまたは型名に関連付けられている既存の型へのポインタを取得します。必須パラメータにNULLがある場合、スキーマまたは型名に関連付けられたオブジェクト型が存在しない場合、またはversion_nameが存在しない場合はエラーを戻します。


注意:

スキーマおよび型名は大/小文字の区別があります。SQLを使用して作成されている場合は、すべて大文字の文字列を使用する必要があります。すべて大文字でない場合、プログラムは停止します。

この関数では、常にサーバーへのラウンドトリップが発生します。そのため、この関数を繰り返しコールして型を取得すると、パフォーマンスが大幅に低下する可能性があります。ラウンドトリップを最小限にするため、アプリケーションでは、型ごとにこの関数をコールし、型オブジェクトをキャッシュできます。

この関数によって取得した型を解放するには、OCIObjectUnpin()またはOCIObjectPinCountReset()をコールします。

OCITypeArrayByName()またはOCITypeArrayByRef()をコールすることにより、アプリケーションでTDOの配列を取り出せます。


注意:

この関数で取得されたTDO (TDOまたは表定義の配列)は、渡されたサービス・ハンドル(接続)に対応するキャッシュの論理パーティションに属します。TDOまたは表が論理パーティション間で使用される場合、動作は不明であり、リリースによって変化する可能性があります。

OCITypeByRef()

用途

参照の指定時に型を取得します。

構文

sword OCITypeByRef ( OCIEnv          *env,
                     OCIError        *err,
                     const OCIRef    *type_ref,
                     OCIDuration     pin_duration,
                     OCITypeGetOpt   get_option,
                     OCIType         **tdo );

パラメータ

env (IN/OUT)

オブジェクト・モードで初期化されたOCI環境ハンドルです。詳細は、OCIEnvCreate()OCIEnvNlsCreate()およびOCIInitialize() (非推奨)の説明を参照してください。

err (IN/OUT)

OCIエラー・ハンドルです。エラーがある場合は、errに記録され、OCI_ERRORが戻されます。OCIErrorGet()をコールして診断情報を取得します。

type_ref (IN)

取得する型記述子オブジェクトのバージョンを指し示すOCIRef*です。

pin_duration (IN)

取り出す型に対する、カレント・トランザクションの終了までの確保継続時間です。各オプションの説明は、oro.hを参照してください。

get_option (IN)

型をロードする場合のオプションです。値は次の2つのうちのいずれかです。

  • OCI_TYPEGET_HEADER (ヘッダーのみがロードされる)

  • OCI_TYPEGET_ALL (TDOおよびすべてのADOとMDOがロードされる)

tdo (OUT)

オブジェクト・キャッシュに確保された型へのポインタです。

コメント

OCITypeByRef()関数は、必須パラメータにNULLがある場合、エラーを戻します。


注意:

この関数で取得されたTDO (TDOまたは表定義の配列)は、渡されたサービス・ハンドル(接続)に対応するキャッシュの論理パーティションに属します。TDOまたは表が論理パーティション間で使用される場合、動作は不明であり、リリースによって変化する可能性があります。