SET_RECORD_BUFFER

有效對象

擷取與 Replicat

說明

使用 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>

記錄緩衝區的新長度。

輸出

無

傳回值

EXIT_FN_RET_INVALID_CONTEXT
EXIT_FN_RET_INVALID_PARAM
EXIT_FN_RET_OK
EXIT_FN_RET_NOT_SUPPORTED