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ファンクション(SET_COLUMN_VALUE_BY_INDEXを参照してください)またはSET_COLUMN_VALUE_BY_NAMEファンクション(STRNCMPを参照してください)を使用して、データ・レコードの列値を設定できます。
削除、挿入、および更新は、バッファに完全なレコード・イメージで保持されます。
圧縮SQL更新は、次のフォーマットを持ちます。
index length value [index length value ][...]
説明:
-
indexは、表の列のリストへの2バイトの索引(最初の列はゼロ)です。 -
lengthは、表の2バイトの長さです。 -
valueは、実際の列値で、適切な場合に次の2バイトのNULLインジケータの1つが含まれます。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
親トピック: ユーザー・イグジット・ファンクション