GET_RECORD_BUFFER

Válido Para

Extract e Replicat

Descrição

Use a função GET_RECORD_BUFFER para obter informações para conversões de coluna personalizadas. As saídas do usuário podem ser usadas para mapeamento de dados entre registros de origem e destino diferentes quando a opção COLMAP do parâmetro MAP ou TABLE não for suficiente. Por exemplo, você pode usar uma saída de usuário para converter um campo de data proprietário.

Você pode usar a função SET_RECORD_BUFFER (consulte "SET_RECORD_BUFFER") para modificar os dados recuperados com GET_RECORD_BUFFER. No entanto, isso requer uma compreensão do registro de dados conforme escrito no formato canônico interno do Oracle GoldenGate. Como alternativa, você pode definir valores de coluna no registro de dados com a função SET_COLUMN_VALUE_BY_INDEX (consulte) ou a função SET_COLUMN_VALUE_BY_NAME (consulte "@STRNCMP").

As exclusões, inserções e atualizações aparecem no buffer como imagens de registro completo.

As atualizações SQL compactadas têm o seguinte formato:

<index> <length> <value> [<index> <length> <value> ][...]

onde:

Para registros SQL, você pode usar a função DECOMPRESS_RECORD ("DECOMPRESS_RECORD") para descompactar o registro para possível manipulação e, em seguida, usar a função COMPRESS_RECORD ("COMPRESS_RECORD") para compactá-lo novamente, conforme esperado pelo processo.

Sintaxe

#include "usrdecs.h"
short result_code;
record_def record;
ERCALLBACK (GET_RECORD_BUFFER, &record, &result_code);

Buffer

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;

Entrada

<source_or_target>

Uma das opções a seguir indica se o buffer de registro deve ser retornado para o registro de dados de origem ou de destino.

EXIT_FN_SOURCE_VAL
EXIT_FN_TARGET_VAL

<requesting_before_after_ind>

Opcional. Defina ao solicitar um buffer de registro em um registro io_type de atualização de chave primária UPDATE_COMP_PK_SQL_VAL (). Use uma das opções a seguir para indicar qual parte da atualização de chave primária deve ser acessada. A predefinição é AFTER_IMAGE_VAL.

BEFORE_IMAGE_VAL
AFTER_IMAGE_VAL

Saída

<buffer>

Um ponteiro para o buffer de registro. Normalmente, buffer é um ponteiro para um buffer do tipo exit_rec_buf_def. O buffer exit_rec_buf_def contém o registro real prestes a ser processado pelo processo Extract ou Replicat. O buffer é fornecido quando o tipo de chamada é EXIT_CALL_DISCARD_RECORD. Rotinas de saída podem alterar o conteúdo deste buffer, por exemplo, para executar funções de mapeamento personalizadas.

O conteúdo do buffer de registro não é convertido para ou a partir do conjunto de caracteres da saída do usuário. Foi informado como está.

<length>

O comprimento retornado do buffer de registro.

<io_type>

Retornada como uma das seguintes opções:

SQL_DDL_VAL
DELETE_VAL
INSERT_VAL
UPDATE_VAL
UPDATE_COMP_SQL_VAL
UPDATE_COMP_PK_SQL_VAL
TRUNCATE_TABLE_VAL

<mapped>

Um flag (0 ou 1) indicando se este é ou não um buffer de registro mapeado.

<before_after_ind>

Uma das opções a seguir indica se o registro é uma imagem anterior ou posterior.

BEFORE_IMAGE_VAL
AFTER_IMAGE_VAL

Valores de Retorno

EXIT_FN_RET_INVALID_CONTEXT
EXIT_FN_RET_INVALID_PARAM
EXIT_FN_RET_OK