ヘッダーをスキップ
Oracle Call Interfaceプログラマーズ・ガイド
11g リリース1(11.1)
E05677-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

ダイレクト・パス・ロード関数

この項では、ダイレクト・パス・ロード関数について説明します。

表17-8 ダイレクト・パス・ロード関数

関数 用途

OCIDirPathAbort()


ダイレクト・パス処理を終了します。

OCIDirPathColArrayEntryGet()


列配列内の特定のエントリを取得します。

OCIDirPathColArrayEntrySet()


列配列内の特定のエントリを特定の値に設定します。

OCIDirPathColArrayRowGet()


特定の行番号の基本行ポインタを取得します。

OCIDirPathColArrayReset()


行配列の状態をリセットします。

OCIDirPathColArrayToStream()


列配列からダイレクト・パス・ストリーム形式に変換します。

OCIDirPathDataSave()


データ・セーブポイントを実行するか、またはロードされたデータをコミットしてロード操作を終了します。

OCIDirPathFinish()


ロードされたデータを終了およびコミットします。

OCIDirPathFlushRow()


非推奨です。

OCIDirPathLoadStream()


ダイレクト・パス・ストリーム形式に変換されたデータをロードします。

OCIDirPathPrepare()


行の変換またはロードを行うために、ダイレクト・パス・インタフェースを準備します。

OCIDirPathStreamReset()


ダイレクト・パス・ストリームの状態をリセットします。



OCIDirPathAbort()

用途

ダイレクト・パス処理を終了します。

構文

sword OCIDirPathAbort   ( OCIDirPathCtx          *dpctx,
                          OCIError               *errhp );

パラメータ

dpctx (IN)

ダイレクト・パス・コンテキスト・ハンドルです。

errhp (IN/OUT)

エラー発生時の診断情報のためにOCIErrorGet()に渡すエラー・ハンドルです。

コメント

ダイレクト・パス処理のかわりにサーバーによって維持されていたすべての状態は、終了によって破棄されます。ダイレクト・パス・ロードの場合、終了前にロードされたデータは問合せで参照できなくなりますが、ロードされていなかったデータが、まだセグメントの領域を使用している可能性があります。索引メンテナンス処理などのロード完了処理は行われません。

関連関数

OCIDirPathFinish()OCIDirPathPrepare()OCIDirPathLoadStream()OCIDirPathStreamReset()OCIDirPathDataSave()


OCIDirPathColArrayEntryGet()

用途

列配列内の指定のエントリを取得します。

構文

sword OCIDirPathColArrayEntryGet ( OCIDirPathColArray   *dpca,
                                   OCIError             *errhp,
                                   ub4                  rownum,
                                   ub2                  colIdx,
                                   ub1                  **cvalpp,
                                   ub4                  *clenp,
                                   ub1                  *cflgp );

パラメータ

dpca (IN/OUT)

ダイレクト・パス列配列ハンドルです。

errhp (IN)

エラー発生時の診断情報のためにOCIErrorGet()に渡すエラー・ハンドルです。

rownum (IN)

0(ゼロ)ベースの行オフセットです。

colIdx (IN)

列の識別子(索引)です。この列IDはOCIDirPathColAttrSet()によって戻されます。

cvalpp (IN/OUT)

列データを指し示すポインタへのポインタです。

clenp (IN/OUT)

列データの長さへのポインタです。

cflgp (IN/OUT)

列フラグへのポインタです。

次のいずれかの値が戻されます。

コメント

cflgpOCI_DIRPATH_COL_NULLに設定されている場合、cvalpパラメータおよびclenpパラメータには値が設定されません。

関連関数

OCIDirPathColArrayEntrySet()OCIDirPathColArrayRowGet()OCIDirPathColArrayReset()OCIDirPathColArrayToStream()


OCIDirPathColArrayEntrySet()

用途

列配列内の指定のエントリを提供される値に設定します。

構文

sword OCIDirPathColArrayEntrySet ( OCIDirPathColArray   *dpca,
                                   OCIError             *errhp,
                                   ub4                  rownum,
                                   ub2                  colIdx,
                                   ub1                  *cvalp,
                                   ub4                  clen,
                                   ub1                  cflg );

パラメータ

dpca (IN/OUT)

ダイレクト・パス列配列ハンドルです。

errhp (IN)

エラー発生時の診断情報のためにOCIErrorGet()に渡すエラー・ハンドルです。

rownum (IN)

0(ゼロ)ベースの行オフセットです。

colIdx (IN)

列の識別子(索引)です。この列IDはOCIDirPathColAttrSet()によって戻されます。

cvalp (IN)

列データへのポインタです。

clen (IN)

列データの長さです。

cflg (IN)

列フラグです。次のいずれかの値が戻されます。

コメント

cflgOCI_DIRPATH_COL_NULLに設定されている場合、cvalパラメータおよびclenパラメータは使用されません。

次の例では、列配列内の最初の行のデータのソースにaddr、長さにlenを設定します。この例では、列は、colIdによって識別されます。

err = OCIDirPathColArrayEntrySet(dpca, errhp, (ub2)0, colId, addr, len,
          OCI_DIRPATH_COL_COMPLETE);

関連関数

OCIDirPathColArrayRowGet()OCIDirPathColArrayRowGet()OCIDirPathColArrayReset()OCIDirPathColArrayToStream()


OCIDirPathColArrayRowGet()

用途

特定の行番号の列配列行ポインタを取得します。

構文

sword OCIDirPathColArrayRowGet ( OCIDirPathColArray   *dpca,
                                 OCIError             *errhp,
                                 ub4                  rownum,
                                 ub1                  ***cvalppp,
                                 ub4                  **clenpp,
                                 ub1                  **cflgpp );

パラメータ

dpca (IN/OUT)

ダイレクト・パス列配列ハンドルです。

errhp (IN)

エラー発生時の診断情報のためにOCIErrorGet()に渡すエラー・ハンドルです。

rownum (IN)

0(ゼロ)ベースの行オフセットです。

cvalppp (IN/OUT)

列データのポインタのベクトルへのポインタです。

clenpp (IN/OUT)

列データの長さのベクトルへのポインタです。

cflgpp (IN/OUT)

列フラグのベクトルへのポインタです。

コメント

指定行の列配列エントリにポインタが戻ります。ポインタが戻ると、アプリケーションでは簡単なポインタ計算をして特定行の列間で反復処理を行います。このインタフェースを使用すると、各列でOCIDirPathColArrayEntrySet()をコールする場合と比べて、行の列配列エントリの取得または設定を効率的に行うことができます。アプリケーションから、列配列の境界を超えてメモリーを間接参照しないでください。列配列の次元は、列配列の属性として取得できます。

関連関数

OCIDirPathColArrayRowGet()OCIDirPathColArrayEntrySet()OCIDirPathColArrayReset()OCIDirPathColArrayToStream()


OCIDirPathColArrayReset()

用途

列配列の状態をリセットします。

構文

sword OCIDirPathColArrayReset ( OCIDirPathColArray   *dpca,
                                OCIError             *errhp );

パラメータ

dpca (IN)

ダイレクト・パス列配列ハンドルです。

errhp (IN)

エラー発生時の診断情報のためにOCIErrorGet()に渡すエラー・ハンドルです。

コメント

列配列の状態は、大きな列内でピース単位操作を行うとき、および列のロード中にエラーが発生したときに、リセットする必要があります。最後のOCIDirPathColArrayReset()コールによってOCI_NEED_DATAまたはOCI_CONTINUEが戻された場合、列配列はリセットしないでください。これは、まだ行の変換中であるためです。OCI_DIRPATH_COL_ERRORを使用して、OCI_NEED_DATAから現在の行を削除してください。

関連関数

OCIDirPathColArrayEntryGet()OCIDirPathColArrayEntrySet()OCIDirPathColArrayRowGet()OCIDirPathColArrayToStream()


OCIDirPathColArrayToStream()

用途

列配列形式からダイレクト・パス・ストリーム形式に変換します。

構文

sword OCIDirPathColArrayToStream ( OCIDirPathColArray     *dpca,
                                   OCIDirPathCtx  const   *dpctx,
                                   OCIDirPathStream       *dpstr,
                                   OCIError               *errhp,
                                   ub4                    rowcnt,
                                   ub4                    rowoff );

パラメータ

dpca (IN)

ダイレクト・パス列配列ハンドルです。

dpctx (IN)

ロードされているオブジェクトのダイレクト・パス・コンテキスト・ハンドルです。

dpstr (IN/OUT)

ダイレクト・パス・ストリーム・ハンドルです。

errhp (IN)

エラー発生時の診断情報のためにOCIErrorGet()に渡すエラー・ハンドルです。

rowcnt (IN)

列配列内の行数です。

rowoff (IN)

列配列内の開始索引です。

コメント

このインタフェースは、OCIDirPathColAttrSet()によって指定された外部形式の列配列表現データを、ダイレクト・パス・ストリーム形式に変換するときに使用します。変換された形式は、OCIDirPathLoadStream()を使用したロードに適しています。

ダイレクト・パス・ストリーム形式の列データは、Oracleの内部表現のデータに変換されます。すべての変換は、この2タスク・インタフェースのクライアント側で行われ、変換エラーは、このインタフェースへのコールと同時に発生します。エラーが発生した行および列に関する情報は、列配列ハンドルの属性として取得できます。

スレッド環境では、同時に行われるOCIDirPathColArrayToStream()操作によって同じダイレクト・パス・コンテキスト・ハンドルが参照されることがあります。ただし、このインタフェースでは、ダイレクト・パス・コンテキスト・ハンドルは変更されません。

このコールのリターン・コードは次のとおりです。

関連関数

OCIDirPathColArrayEntryGet()OCIDirPathColArrayEntrySet()OCIDirPathColArrayRowGet()OCIDirPathColArrayReset()


OCIDirPathDataSave()

用途

要求されたアクションに応じて、データ・セーブポイントを実行するか、またはロードされたデータをコミットしてダイレクト・パス・ロード操作を終了します。

構文

sword OCIDirPathDataSave ( OCIDirPathCtx          *dpctx,
                           OCIError               *errhp,
                           ub4                    action  );

パラメータ

dpctx (IN)

ロードされるオブジェクトのダイレクト・パス・コンテキスト・ハンドルです。

errhp (IN/OUT)

エラー発生時の診断情報のためにOCIErrorGet()に渡すエラー・ハンドルです。

action (IN)

OCIDirPathDataSave()の次のアクション・パラメータの値です。

コメント

戻り値OCI_SUCCESSは、バックエンドによるデータ・セーブポイントまたは終了ロジックが正常に実行されたことを示します。

LOBでは、データ・セーブポイントは実行できません。

終了ロジックの実行は、割り当てられたリソースが解放されないため、ロードの正常終了とは異なります。

関連関数

OCIDirPathAbort()OCIDirPathFinish()OCIDirPathPrepare()OCIDirPathStreamReset()


OCIDirPathFinish()

用途

ダイレクト・パス・ロード操作を終了します。

構文

sword OCIDirPathFinish (   OCIDirPathCtx          *dpctx,
                           OCIError               *errhp );

パラメータ

dpctx (IN)

ロードされるオブジェクトのダイレクト・パス・コンテキスト・ハンドルです。

errhp (IN/OUT)

エラー発生時の診断情報のためにOCIErrorGet()に渡すエラー・ハンドルです。

コメント

ロードが完了して、ロードされたデータがコミットされるときに、ダイレクト・パス終了関数がコールされます。すべてのストリームがロードされるまで終了はできず、部分的にロードされた行というものは存在しません。

戻り値OCI_SUCCESSは、バックエンドによるロードが正常に終了したことを示します。

関連関数

OCIDirPathAbort()OCIDirPathDataSave()OCIDirPathPrepare()OCIDirPathStreamReset()


OCIDirPathFlushRow()

用途

サーバーから部分的にロードされた行をフラッシュします。この関数は非推奨です。

構文

sword OCIDirPathFlushRow (   OCIDirPathCtx          *dpctx,
                             OCIError               *errhp );

パラメータ

dpctx (IN)

ロードされるオブジェクトのダイレクト・パス・コンテキスト・ハンドルです。

errhp (IN/OUT)

エラー発生時の診断情報のためにOCIErrorGet()に渡すエラー・ハンドルです。

コメント

この関数は、行の一部がロードされたときに必要ですが、アプリケーションで次に処理するピースで変換エラーが発生します。現在、部分状態の行のみが廃棄されます。サーバーが、現在、ダイレクト・パス・コンテキストに関連するオブジェクトに対する部分状態の行を処理していない場合、この関数は基本的に何も行いません。

関連関数

OCIDirPathAbort()OCIDirPathFinish()OCIDirPathPrepare()OCIDirPathLoadStream()


OCIDirPathLoadStream()

用途

ダイレクト・パス・ストリーム形式に変換されたデータをロードします。

構文

sword OCIDirPathLoadStream (   OCIDirPathCtx          *dpctx,
                               OCIDirPathStream       *dpstr,
                               OCIError               *errhp );

パラメータ

dpctx (IN)

ロードされるオブジェクトのダイレクト・パス・コンテキスト・ハンドルです。

dpstr (IN)

ロードするストリームのダイレクト・パス・ストリーム・ハンドルです。

errhp (IN)

エラー発生時の診断情報のためにOCIErrorGet()に渡すエラー・ハンドルです。

コメント

インタフェースからエラーが戻されたときは、ストリームのソースとなった列配列内の列に関する情報を、ダイレクト・パス・ストリームの属性として取得できます。また、エラーが発生したストリーム内のオフセットも、ストリームの属性として取得できます。

この関数のリターン・コードは次のとおりです。

OCI_SUCCESSOCI_NEED_DATAまたはOCI_NO_DATAが戻されるまでは、ストリームを何度でもロードする必要があります。たとえば、OCI_ERROROCIDirPathLoadStream()から戻された場合、ストリームはリセットできません。

関連関数

OCIDirPathAbort()OCIDirPathDataSave()OCIDirPathFinish()OCIDirPathPrepare()OCIDirPathStreamReset()


OCIDirPathPrepare()

用途

行の変換またはロードを行う前に、ダイレクト・パス・ロード・インタフェースを準備します。

構文

sword OCIDirPathPrepare (   OCIDirPathCtx          *dpctx,
                            OCISvcCtx              *svchp,
                            OCIError               *errhp );

パラメータ

dpctx (IN)

ロードされるオブジェクトのダイレクト・パス・コンテキスト・ハンドルです。

svchp (IN)

サービス・コンテキストです。

errhp (IN/OUT)

エラー発生時の診断情報のためにOCIErrorGet()に渡すエラー・ハンドルです。

コメント

操作するオブジェクトの名前、列データの外部属性、およびすべてのロード・オプションの設定後、行の変換またはロードの前にOCIDirPathPrepare()を使用してダイレクト・パス・インタフェースを準備する必要があります。

戻り値OCI_SUCCESSは、ダイレクト・パス・ロード操作を行うために、バックエンドが適切に初期化されたことを示しています。0(ゼロ)以外の戻り値は、エラーを示します。戻される可能性のあるエラーは次のとおりです。

関連関数

OCIDirPathAbort()OCIDirPathDataSave()OCIDirPathFinish()OCIDirPathStreamReset()


OCIDirPathStreamReset()

用途

ダイレクト・パス・ストリームの状態をリセットします。

構文

sword OCIDirPathStreamReset ( OCIDirPathStream       *dpstr,
                              OCIError               *errhp );

パラメータ

dpstr (IN)

ダイレクト・パス・ストリーム・ハンドルです。

errhp (IN)

エラー発生時の診断情報のためにOCIErrorGet()に渡すエラー・ハンドルです。

コメント

ダイレクト・パス・ストリームでは、次のOCIDirPathColArrayToStream()がストリームに書込みを開始する場所を示す状態を維持します。通常、データはストリームの末尾に追加されます。ストリームは、正常にロードされる(ロードによってOCI_SUCCESSOCI_NEED_DATAまたはOCI_NO_DATAが戻される)まではリセットできません。

関連関数

OCIDirPathAbort()OCIDirPathDataSave()OCIDirPathFinish()OCIDirPathPrepare()