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> ][...]
ここで:
-
<index>は、表の列のリストへの2バイトの索引(最初の列はゼロ)です。 -
<length>は、表の2バイトの長さです。 -
<value>は、実際の列値であり、次の2バイトのNULLインジケータのいずれかが含まれます(該当する場合)。0はNULLではありません。-1はNULLです。
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>
次のいずれかとして返されます:
DDLタイプ:
SQL_DDL_VAL
DML型:
DELETE_VAL
INSERT_VAL
UPDATE_VAL
- 圧縮SQL更新:
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