主コンテンツへ
Oracle® Fusion Middleware Oracle GoldenGateリファレンスfor Windows and UNIX
12c (12.2.0.1)
E70112-04
目次へ移動
目次

前
次

6.6 ERCALLBACKの使用

ERCALLBACKでは、コールバック・ルーチンを実行します。ユーザー・コールバック・ルーチンは、ExtractまたはReplicatプロセスからコンテキスト情報を取得し、コール・タイプが次のいずれかのときにレコード自体を含むコンテキスト値を設定します。

構文

ERCALLBACK (function_code, buffer, result_code );
function_code

コールバック・ルーチンによって実行されるファンクション。ユーザー・コールバック・ルーチンは、コールバック・ルーチンに渡されるファンクション・コードに基づいて異なる動作をします。一部のファンクションは、ExtractおよびReplicat両方が使用できますが、各プロセスでのファンクションの有効性は、コールバック・ルーチン中にそのファンクションに対して設定される入力パラメータに依存します。使用可能なファンクション・コードの詳細は、ファンクション・コードを参照してください。

buffer

指定するファンクション・コードに関連付けられている事前定義済構造体を含むバッファへのvoidポインタ。

result_code

コールバック・ルーチンによって実行されるファンクションのステータス。コールバック・ルーチンによって返される結果コードは、コールバック・ファンクションが成功したかどうかを示します。結果コードは、表6-4の値の1つになります。


表6-4 結果コード

コード 説明

EXIT_FN_RET_BAD_COLUMN_DATA

列データを取得または設定中に無効なデータを検出しました。

EXIT_FN_RET_BAD_DATE_TIME

ofの日付、タイムスタンプまたは間隔タイプに、無効な日付または時刻の値が含まれています。

EXIT_FN_RET_BAD_NUMERIC_VALUE

列の数値タイプに、無効な数値が含まれています。

EXIT_FN_RET_COLUMN_NOT_FOUND

圧縮更新レコードで列が見つかりませんでした(変更された値のみを記録するデータベースによる更新)。

EXIT_FN_RET_ENV_NOT_FOUND

指定された環境値がレコードに見つかりませんでした。

EXIT_FN_RET_EXCEEDED_MAX_LENGTH

表または列名が割り当てられたバッファに収まらなかったため、メタデータを取得できませんでした。

EXIT_FN_RET_FETCH_ERROR

レコードをフェッチできませんでした。エラー・メッセージを表示して理由を確認してください。

EXIT_FN_RET_INCOMPLETE_DDL_REC

DDLレコードの処理中に内部エラーが発生しました。レコードが不完全の可能性があります。

EXIT_FN_RET_INVALID_CALLBACK_FNC_CD

無効なコールバック・ファンクション・コードがコールバック・ルーチンに渡されました。

EXIT_FN_RET_INVALID_COLUMN

ファンクション・コールで、存在しない列が参照されました。

EXIT_FN_RET_INVALID_COLUMN_TYPE

ルーチンは、その目的ではOracle GoldenGateにサポートされていないデータ型を操作しようとしています。

EXIT_FN_RET_INVALID_CONTEXT

コールバック・ファンクションが不適切なときにコールされました。

EXIT_FN_RET_INVALID_PARAM

無効なパラメータがコールバック・ファンクションに渡されました。

EXIT_FN_RET_NO_SRCDB_INSTANCE

ソース・データベース・インスタンスが見つかりませんでした。

EXIT_FN_RET_NO_TGTDB_INSTANCE

ターゲット・データベース・インスタンスが見つかりませんでした。

EXIT_FN_RET_NOT_SUPPORTED

このファンクションは、このプロセスに対してサポートされていません。

EXIT_FN_RET_OK

コールバック・ファンクションは成功しました。

EXIT_FN_RET_SESSION_CS_CNV_ERR

キャラクタ・セット変換ルーチンにULIB_ERR_INVALID_CHAR_FOUNDエラーが返されました。変換は失敗しました。

EXIT_FN_RET_TABLE_NOT_FOUND

無効な表名が指定されました。

EXIT_FN_RET_TOKEN_NOT_FOUND

指定されたトークンがレコードに見つかりませんでした。