GET_RECORD_BUFFER

有効な対象

ExtractおよびReplicat

摘要

GET_RECORD_BUFFERファンクションでは、カスタム列変換に関する情報を取得します。MAPまたはTABLEパラメータのCOLMAPオプションでは十分に対応できないときは、ユーザー・イグジットを使用して異なるソースおよびターゲット・レコード間でデータをマッピングできます。たとえば、ユーザー・イグジットを使用して独自仕様の日付フィールドを変換できます。

SET_RECORD_BUFFERファンクション(「SET_RECORD_BUFFER」を参照してください)では、GET_RECORD_BUFFERで取得したデータを変更できます。ただし、これには内部Oracle GoldenGate正規フォーマットで書き込まれたデータ・レコードに対する理解が必要です。かわりの方法で、SET_COLUMN_VALUE_BY_INDEXファンクション(「@STRNCMP」を参照)またはSET_COLUMN_VALUE_BY_NAMEファンクション(1「STRNCMP」1を参照)を使用すると、データ・レコードの列値を設定できます。

削除、挿入、および更新は、バッファに完全なレコード・イメージで保持されます。

圧縮SQL更新は、次のフォーマットを持ちます。

<index> <length> <value> [<index> <length> <value> ][...]

ここで:

SQLレコードの場合は、DECOMPRESS_RECORDファンクション(DECOMPRESS_RECORDを参照してください)を使って操作のためにレコードを解凍した後、COMPRESS_RECORDファンクション(COMPRESS_RECORDを参照してください)を使って、プロセスに予期されるとおりにう一度圧縮できます。

構文

#include "usrdecs.h"
short result_code;
record_def record;
ERCALLBACK (GET_RECORD_BUFFER, &record, &result_code);

バッファ

typedef struct
{
char *table_name;
char *buffer;
long length;
char before_after_ind;
short io_type;
short record_type;
short transaction_ind;
int64_t timestamp;
exit_ts_str io_datetime;
short mapped;
short source_or_target;
/* Version 2 CALLBACK_STRUCT_VERSION   */
char requesting_before_after_ind;
} record_def;

入力

<source_or_target>

ソース・データ・レコードまたはターゲット・データ・レコードのどちらかのレコード・バッファを返すかを示す次の一方。

EXIT_FN_SOURCE_VAL
EXIT_FN_TARGET_VAL

<requesting_before_after_ind>

オプション。io_typeがUPDATE_COMP_PK_SQL_VAL(主キー更新)のレコードのレコード・バッファをリクエストしているときに設定します。次のいずれかを使用して、主キー更新のどの部分にアクセスするかを指定します。デフォルトはAFTER_IMAGE_VALです。

BEFORE_IMAGE_VAL
AFTER_IMAGE_VAL

出力

<buffer>

レコード・バッファへのポインタ。通常bufferは、exit_rec_buf_defタイプのバッファへのポインタです。exit_rec_buf_defバッファには、ExtractまたはReplicatによってまもなく処理される実際のレコードが含まれます。このバッファは、コール・タイプがEXIT_CALL_DISCARD_RECORDのときに指定されます。イグジット・ルーチンは、たとえばカスタム・マッピング・ファンクションを実行するために、このバッファの内容を変えることがあります。

レコード・バッファの内容は、ユーザー・イグジットの文字セットとの変換が行われません。これはそのままで渡されます。

<length>

返されるレコード・バッファの長さ。

<io_type>

次のいずれかとして返されます:

SQL_DDL_VAL
DELETE_VAL
INSERT_VAL
UPDATE_VAL
UPDATE_COMP_SQL_VAL
UPDATE_COMP_PK_SQL_VAL
TRUNCATE_TABLE_VAL

<mapped>

これがマップされたレコード・バッファかどうかを示すフラグ(0または1)。

<before_after_ind>

レコードがビフォア・イメージかアフター・イメージかを示す次の一方。

BEFORE_IMAGE_VAL
AFTER_IMAGE_VAL

戻り値

EXIT_FN_RET_INVALID_CONTEXT
EXIT_FN_RET_INVALID_PARAM
EXIT_FN_RET_OK