3.32 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
親トピック: ユーザー・イグジット・ファンクション