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