GET_RECORD_BUFFER

유효 기간

추출 및 복제

설명

GET_RECORD_BUFFER 함수를 사용하여 사용자정의 열 변환에 대한 정보를 가져옵니다. MAP 또는 TABLE 매개변수의 COLMAP 옵션이 충분하지 않은 경우 다른 소스와 대상 레코드 간의 데이터 매핑에 User Exit을 사용할 수 있습니다. 예를 들어, 사용자 종료를 사용하여 독점 날짜 필드를 변환할 수 있습니다.

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일 때 제공됩니다. 종료 루틴은 사용자 정의 매핑 기능을 수행하기 위해 이 버퍼의 내용을 변경할 수 있습니다.

레코드 버퍼의 내용은 User Exit의 문자 집합으로 변환되거나 User Exit의 문자 집합에서 변환되지 않습니다. 그대로 전달됩니다.

<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