説明
SET_RECORD_BUFFER
ファンクションは、ユーザー・イグジットとの互換性の維持、および複雑なデータ・レコード操作のために使用します。このファンクションでは、レコード全体を操作します。データ・レコード・バッファを直接正確に変更するには、Oracle GoldenGate内部レコード・フォーマットを把握する必要があるため、変更を行うときは、レコード全体ではなく個々の列値を変更する方法が最適です。列値を変更するには、SET_COLUMN_VALUE_BY_INDEX
およびSET_COLUMN_VALUE_BY_NAME
ファンクションを使用します。ユーザー・イグジット内のこれらのファンクションで、ほとんどのカスタム・マッピングを十分に処理できます。
構文
#include "usrdecs.h" short result_code; record_def record; ERCALLBACK (SET_RECORD_BUFFER, &record_def, &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;
入力
buffer
新しいレコード・バッファへのポインタ。通常、buffer
はタイプexit_rec_buf_def
のバッファへのポインタです。exit_rec_buf_def
バッファには、ExtractまたはReplicatによってまもなく処理される実際のレコードが含まれます。このバッファは、コール・タイプがEXIT_CALL_DISCARD_RECORD
のときに指定されます。イグジット・ルーチンは、たとえばカスタム・マッピング・ファンクションを実行するために、このバッファの内容を変えることがあります。
レコード・バッファの内容は、ユーザー・イグジットのキャラクタ・セットとの変換が行われません。これはそのままで渡されます。
length
新しいレコード・バッファの長さ。