SET_RECORD_BUFFER
有效对象
提取和复制
说明
使用 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 缓冲区包含提取或复制将要处理的实际记录。调用类型为 EXIT_CALL_DISCARD_RECORD 时会提供缓冲区。退出例程可以更改此缓冲区的内容,例如执行定制映射函数。
记录缓冲区的内容不会转换为用户出口的字符集或从该字符集中转换。它按原样进行传递。
<length>
记录缓冲区的新长度。
输出
无
返回值
EXIT_FN_RET_INVALID_CONTEXT
EXIT_FN_RET_INVALID_PARAM
EXIT_FN_RET_OK
EXIT_FN_RET_NOT_SUPPORTED