この項では、OCIの型情報アクセッサ関数について説明します。
表18-12 型情報アクセッサ関数
関数 | 用途 |
---|---|
|
オブジェクト名配列を指定してTDO配列を取得します。 |
|
オブジェクト参照配列を指定してTDO配列を取得します。 |
|
オブジェクト名を指定してTDOを取得します。 |
|
オブジェクト参照を指定してTDOを取得します。 |
用途
名前配列を指定して型配列を取得します。
構文
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[] );
パラメータ
オブジェクト・モードで初期化されたOCI環境ハンドルです。詳細は、OCIEnvCreate()およびOCIInitialize()の説明を参照してください。
OCIエラー・ハンドルです。エラーがある場合は、err
に記録され、OCI_ERROR
が戻されます。OCIErrorGet()
をコールして診断情報を取得します。
OCIサービス・ハンドルです。
取り出されるschema_name/type_name/version_name
エントリの数です。
取り出される型に対応付けられているスキーマ名の配列です。この配列を指定する場合は、array_len
個の要素が必要です。0(ゼロ)を指定した場合は、デフォルト・スキーマであるとみなされます。それ以外の場合は、array_len
個の要素が必要です。デフォルト・スキーマが必要であることを指示するために、1つ以上のエントリに0(ゼロ)を指定できます。
schema_name
長さの配列で、それぞれのエントリが、schema_name
配列の対応するschema_name
エントリのバイト単位の長さに対応しています。この配列には、array_len
個の要素が必要です。schema_name
が指定されていない場合は、0(ゼロ)にしてください。
取り出される型の名前の配列です。array_len
個の要素が必要です。
type_name
配列にある型名のバイト単位の長さの配列です。
バージョン名は無視され、要求された型の最新バージョンが戻されます。リリース9.0.1以上は型の変更が可能であるため、それより前のリリースのアプリケーションで変更された型にアクセスすると、エラーが発生します。この場合は、新しい型定義を使用して、アプリケーションの変更、再コンパイルおよび再リンクを行う必要があります。
取り出される型に対応するバージョン名の配列です。この配列は、最新バージョンの取出しを示す0(ゼロ)にするか、またはarray_len
個の要素が必要です。
0(ゼロ)が指定された場合は、最新バージョンとみなされます。それ以外の場合は、array_len
個の要素が必要です。現行バージョンが必要であることを示すために、複数のエントリに0(ゼロ)を指定できます。
version_name
配列にあるバージョン名のバイト単位の長さの配列です。
取り出された型用の確保継続時間(たとえば、カレント・トランザクションの終わりまで)です。各オプションの説明は、oro.h
を参照してください。
型をロードするためのオプションは、次のどちらかの値です。
OCI_TYPEGET_HEADER
− ロードされるヘッダー用のみ
OCI_TYPEGET_ALL
− TDOおよびロードされるすべてのADOとMDO用
オブジェクト・キャッシュに確保された各型へのポインタ用出力配列です。これには、array_len
ポインタ用の領域が必要です。OCIObjectGetObjectRef()
を使用して、確保された各型記述子に対するCREFを取得します。
コメント
スキーマ/型名配列に対応付けられている既存の型のポインタを取得します。
get_option
パラメータを使用すると、各ラウンドトリップごとにロードされるTDOの部分を制御できます。
この関数は、必須パラメータにNULL
がある場合、あるいはスキーマ名または型名に対応付けられたオブジェクト型が存在しない場合はエラーを戻します。
配列ではなく単一の型を取り出すには、OCITypeByName()
を使用します。
注意: この関数で取得されたTDO(TDOまたは表定義の配列)は、渡されたサービス・ハンドル(接続)に対応するキャッシュの論理パーティションに属します。TDOまたは表が論理パーティション間で使用される場合、動作は不明であり、リリースによって変化する可能性があります。 |
関連関数
OCITypeArrayByRef()、OCITypeByName()、OCITypeByRef()
用途
参照配列を指定して型配列を取得します。
構文
sword OCITypeArrayByRef ( OCIEnv *envhp, OCIError *errhp, ub4 array_len, const OCIRef *type_ref[], OCIDuration pin_duration, OCITypeGetOpt get_option, OCIType *tdo[] );
パラメータ
オブジェクト・モードで初期化されたOCI環境ハンドルです。詳細は、OCIEnvCreate()およびOCIInitialize()の説明を参照してください。
OCIエラー・ハンドルです。エラーがある場合は、err
に記録され、OCI_ERROR
が戻されます。OCIErrorGet()
をコールして診断情報を取得します。
取り出されるschema_name/type_name/version_nameエントリの数です。
取り出される型記述子オブジェクトの特定のバージョンを指し示すOCIRef*
の配列です。この配列を指定する場合は、array_len
個の要素が必要です。
取り出された型用の確保継続時間(たとえば、カレント・トランザクションの終わりまで)です。各オプションの説明は、oro.hを参照してください。
型をロードするためのオプションは、次のどちらかの値です。
OCI_TYPEGET_HEADER
− ロードされるヘッダーのみ
OCI_TYPEGET_ALL
− TDOおよびロードされるすべてのADOとMDO用
オブジェクト・キャッシュに確保された各型へのポインタ用出力配列です。これには、array_len
ポインタ用の領域が必要です。OCIObjectGetObjectRef()
を使用して、確保された各型記述子に対するCREFを取得します。
コメント
スキーマ/型名配列に対応付けられている既存の型のポインタを取得します。
この関数は、次の場合にエラーを戻します。
必須パラメータにNULL
がある場合
スキーマ/型名エントリに対応付けられている1つ以上のオブジェクト型が存在しない場合
型の配列ではなく、単一の型を取り出すには、OCITypeByRef()
を使用します。
注意: この関数で取得されたTDO(TDOまたは表定義の配列)は、渡されたサービス・ハンドル(接続)に対応するキャッシュの論理パーティションに属します。TDOまたは表が論理パーティション間で使用される場合、動作は不明であり、リリースによって変化する可能性があります。 |
関連関数
OCITypeArrayByName()、OCITypeByRef()、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 );
パラメータ
オブジェクト・モードで初期化されたOCI環境ハンドルです。詳細は、OCIEnvCreate()およびOCIInitialize()の説明を参照してください。
OCIエラー・ハンドルです。エラーがある場合は、err
に記録され、OCI_ERROR
が戻されます。OCIErrorGet()
をコールして診断情報を取得します。
OCIサービス・ハンドルです。
型に対応付けられているスキーマ名です。デフォルトでは、ユーザーのスキーマ名が使用されます。この文字列はすべて大文字であることが必要です。それ以外の場合は、内部エラーが発生してプログラムが停止します。
schema_name
パラメータの長さ(バイト単位)です。
取得する型の名前です。この文字列はすべて大文字であることが必要です。それ以外の場合は、内部エラーが発生してプログラムが停止します。
type_name
パラメータの長さ(バイト単位)です。
バージョン名は無視され、要求された型の最新バージョンが戻されます。リリース9.0.1以上は型の変更が可能であるため、それより前のリリースのアプリケーションで変更された型にアクセスすると、エラーが発生します。この場合は、新しい型定義を使用して、アプリケーションの変更、再コンパイルおよび再リンクを行う必要があります。
ユーザーが読取り可能な、型のバージョンです。最新のバージョンを取り出すには、(text *) 0
を渡します。
version_name
のバイト単位の長さです。
確保継続時間です。
型をロードするためのオプションは、次のどちらかの値です。
OCI_TYPEGET_HEADER
− ロードされるヘッダー用のみ
OCI_TYPEGET_ALL
− TDOおよびロードされるすべてのADOとMDO用
オブジェクト・キャッシュに確保された型へのポインタです。
コメント
この関数は、スキーマ/型名に対応付けられている既存の型へのポインタを取得します。必須パラメータにNULL
がある場合、スキーマ/型名に対応付けられたオブジェクト型が存在しない場合、またはversion_name
が存在しない場合はエラーを戻します。
注意: スキーマおよび型名は大/小文字が区別されます。SQLを使用して作成されている場合は、すべて大文字の文字列を使用する必要があります。すべて大文字でない場合、プログラムは停止します。 |
この関数では、常にサーバーへのラウンドトリップが発生するため、この関数を繰り返しコールして型を取得すると、パフォーマンスが大幅に低下する可能性があります。ラウンドトリップを最小限にするため、アプリケーションでは、型ごとにこの関数をコールし、型オブジェクトをキャッシュできます。
この関数によって取得した型を解放するには、OCIObjectUnpin()
またはOCIObjectPinCountReset()
をコールします。
OCITypeArrayByName()またはOCITypeArrayByRef()をコールすることにより、アプリケーションでTDOの配列を取り出せます。
注意: この関数で取得されたTDO(TDOまたは表定義の配列)は、渡されたサービス・ハンドル(接続)に対応するキャッシュの論理パーティションに属します。TDOまたは表が論理パーティション間で使用される場合、動作は不明であり、リリースによって変化する可能性があります。 |
関連関数
OCITypeByRef()、OCITypeArrayByName()、OCITypeArrayByRef()
用途
参照を指定して型を取得します。
構文
sword OCITypeByRef ( OCIEnv *env, OCIError *err, const OCIRef *type_ref, OCIDuration pin_duration, OCITypeGetOpt get_option, OCIType **tdo );
パラメータ
オブジェクト・モードで初期化されたOCI環境ハンドルです。詳細は、OCIEnvCreate()およびOCIInitialize()の説明を参照してください。
OCIエラー・ハンドルです。エラーがある場合は、err
に記録され、OCI_ERROR
が戻されます。OCIErrorGet()
をコールして診断情報を取得します。
取得する型記述子オブジェクトのバージョンを指し示すOCIRef*
です。
取り出す型に対する、カレント・トランザクションの終了までの確保継続時間です。各オプションの説明は、oro.h
を参照してください。
型をロードするためのオプションは、次のどちらかの値です。
OCI_TYPEGET_HEADER
− ロードされるヘッダー用のみ
OCI_TYPEGET_ALL
− TDOおよびロードされるすべてのADOとMDO用
オブジェクト・キャッシュに確保された型へのポインタです。
コメント
OCITypeByRef()
関数は、必須パラメータにNULL
がある場合、エラーを戻します。
注意: この関数で取得されたTDO(TDOまたは表定義の配列)は、渡されたサービス・ハンドル(接続)に対応するキャッシュの論理パーティションに属します。TDOまたは表が論理パーティション間で使用される場合、動作は不明であり、リリースによって変化する可能性があります。 |
関連関数