GET_RECORD_BUFFER

有效對象

擷取與 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_NAME 函數 (請參閱 @STRNCMP),在資料記錄中設定資料欄值。

刪除、插入及更新會出現在緩衝區中作為完整記錄影像。

壓縮的 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>

選擇性。在 UPDATE_COMP_PK_SQL_VAL ( 主要金鑰更新的記錄 io_type 上要求記錄緩衝區時設定。使用下列其中一項來指示要存取主索引鍵更新的哪個部分。預設值為 AFTER_IMAGE_VAL。

BEFORE_IMAGE_VAL
AFTER_IMAGE_VAL

輸出

<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