プライマリ・コンテンツに移動
Oracle® Call Interfaceプログラマーズ・ガイド
12c リリース1 (12.1)
B72465-07
目次へ移動
目次
索引へ移動
索引

前
次

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

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

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

関数 用途

「OCITypeArrayByName()」

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

「OCITypeArrayByFullName()」

スキーマ・レベルまたはパッケージ・レベル型の名前配列の指定時にTDO配列を取得します。

「OCITypeArrayByRef()」

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

「OCITypeByFullName()」

スキーマ・レベルまたはパッケージ・レベル型の名前の指定時にTDOを取得します。

「OCITypeByName()」

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

「OCITypeByRef()」

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

「OCITypePackage()」

型がパッケージ型である場合に、そのパッケージ名を取得します。

OCITypeArrayByName()

用途

名前配列の指定時に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または表が論理パーティション間で使用される場合、動作は不明であり、リリースによって変化する可能性があります。

OCITypeArrayByFullName()

スキーマ・レベルまたはパッケージ・レベル型の名前配列の指定時に、既存のTDO配列の最新バージョンを取得します。

用途

スキーマ・レベルまたはパッケージ・レベル型の名前配列の指定時に、既存のTDO配列の最新バージョンを取得します。

注意:

OCITypeArrayByFullName()OCITypeByFullName()の配列バージョンです。したがって、これらの2つの関数は機能的に同一で、一方はOCITypeByName()を使用してOCITypeArrayByFullName()を実装し、もう一方はその逆になります。

構文

sword OCITypeArrayByFullName( OCIEnv          *env, 
                              OCIError        *err, 
                              const OCISvcCtx *svc,
                              ub4              array_len,
                              const oratext   *full_type_name[], 
                              ub4              f_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エントリの数です。

full_type_name (IN)

型の名前です。full_type_nameが完全修飾されない場合、名前解決によって推定された型が判断されます。たとえば、SCOTT.MYPACK.MYTYPEは、MYPACKパッケージ内のMYTYPE型を参照します。現行スキーマがSCOTTである場合は、MYPACK.MYTYPEとなることもあります。PL/SQLの名前解決の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。

これは、スキーマ・レベル型にも適用されます。スキーマ・レベル型を指定する場合は、文字列はSCOTT.MYTYPE、または単にMYTYPEになります。

f_t_length (IN)

バイトで示したfull_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がある場合、あるいはスキーマ名またはパッケージ型名に対応付けられたオブジェクト型が存在しない場合はエラーを戻します。

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

注意:

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

OCITypeArrayByRef()

用途

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

構文

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または表が論理パーティション間で使用される場合、動作は不明であり、リリースによって変化する可能性があります。

OCITypeByFullName()

スキーマ・レベルまたはパッケージ・レベル型の名前の指定時に、既存のTDOの最新バージョンを取得します。

用途

スキーマ・レベルまたはパッケージ・レベル型の名前の指定時に、既存のTDOの最新バージョンを取得します。

構文

sword OCITypeByFullName(OCIEnv          *env, 
                        OCIError        *err, 
                        const OCISvcCtx *svc,
                        const oratext   *full_type_name, 
                        ub4              f_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サービス・ハンドルです。

full_type_name (IN)

型の名前です。full_type_nameが完全修飾されない場合、名前解決によって推定された型が判断されます。したがって、オブジェクトへの完全なパス名には、スキーマ、パッケージ名および型名を含めることができます。たとえば、SCOTT.MYPACK.MYTYPEは、MYPACKパッケージ内のMYTYPE型を参照します。現行スキーマがSCOTTである場合は、MYPACK.MYTYPEとなることもあります。PL/SQLの名前解決の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。

これは、スキーマ・レベル型にも適用されます。スキーマ・レベル型を指定する場合は、文字列はSCOTT.MYTYPE、または単にMYTYPEになります。

f_t_length (IN)

バイトで示したfull_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)

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

コメント

型名が単一の文字列として渡されるということから、シック・クライアントJDBCなど他のクライアントおよびドライバで単一の名前文字列に含まれる型名を簡単に解決することもできます。

リモート・パッケージ型フィールドを含んだパッケージ型は、OCITypeByFullName()ではサポートされません。リモート・パッケージ型フィールドを含んだパッケージ型を取得しようとするとエラーが発生します。

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

注意:

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

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

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

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

注意:

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

OCITypeByName()

既存のTDOの最新バージョンを取得します。

用途

既存のTDOの最新バージョンを取得します。このコールでは、パッケージ・レベル型はサポートしていません。スキーマの名前および型の名前は、それぞれ別個の文字列に入力します。

構文

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()

用途

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

構文

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または表が論理パーティション間で使用される場合、動作は不明であり、リリースによって変化する可能性があります。

OCITypePackage()

用途

型がパッケージ型である場合に、そのパッケージ名を戻します。

構文

oratext* OCITypePackage( OCIEnv        *env, 
                         OCIError      *err, 
                         const OCIType *tdo,
                         ub4           *n_length);

パラメータ

env (IN/OUT)

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

err (IN/OUT)

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

tdo (OUT)

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

n_length

バイトで示したパッケージ名の長さです。

コメント

型がパッケージ型でない場合、戻り値はNULL、n_lengthは0 (ゼロ)になります。