COMPRESS_RECORD

有效對象

擷取與 Replicat

說明

使用 COMPRESS_RECORD 函數來重新壓縮已經使用 DECOMPRESS_RECORD 函數解壓縮的記錄。使用 DECOMPRESS_RECORD 之後,才呼叫 COMPRESS_RECORD。

記錄緩衝區的內容不會轉換為或從使用者結束程式的字元集轉換。它會依原樣傳送。

語法

#include "usrdecs.h"
short result_code;
compressed_rec_def compressed_rec;
ERCALLBACK (COMPRESS_RECORD, &compressed_rec, &result_code);

緩衝區

typedef struct
{
char *compressed_rec;
long compressed_len;
char *decompressed_rec;
long decompressed_len;
short *columns_present;
short source_or_target;
char requesting_before_after_ind;
} compressed_rec_def;

輸入

<decompressed_rec>

壓縮前包含記錄之緩衝區的指標。記錄會假設為預設的 Oracle GoldenGate 正規格式。

<decompressed_len>

已解壓縮記錄的長度。

<source_or_target>

下列其中一項,指示是否壓縮來源或目標記錄。

EXIT_FN_SOURCE_VAL
EXIT_FN_TARGET_VAL

<requesting_before_after_ind>

用作內部輸入。不需要設定。如果設定,將會忽略此設定。

<columns_present>

表示壓縮記錄中資料欄的值陣列。例如,如果壓縮記錄中有第一欄、第三欄和第六欄,且表格中的總欄數為七,則陣列應包含:

1, 0, 1, 0, 0, 1, 0

使用 GET_TABLE_COLUMN_COUNT 函數取得表格中的資料欄數目 (請參閱 "GET_TABLE_COLUMN_COUNT ")。

輸出

<compressed_rec>

以壓縮格式傳回記錄的指標。一般而言,compressed_rec 是 exit_rec_buf_def 類型的緩衝區指標。exit_rec_buf_def 緩衝區包含即將由 Extract 或 Replicat 處理的實際記錄。呼叫類型為 EXIT_CALL_DISCARD_RECORD 時,會提供緩衝區。結束常式可能會變更此緩衝區的內容,例如執行自訂對映功能。呼叫者必須確定將適當的記憶體大小配置給 compressed_rec。

<compressed_len>

傳回的壓縮記錄長度。

傳回值

EXIT_FN_RET_INVALID_CONTEXT
EXIT_FN_RET_OK
EXIT_FN_RET_INVALID_PARAM