GET_RECORD_BUFFER

Valido per

Estrai e Replicat

Descrizione

Utilizzare la funzione GET_RECORD_BUFFER per ottenere informazioni sulle conversioni di colonne personalizzate. Le uscite utente possono essere utilizzate per il mapping dei dati tra record di origine e di destinazione diversi quando l'opzione COLMAP del parametro MAP o TABLE non è sufficiente. Ad esempio, è possibile utilizzare un'uscita utente per convertire un campo data proprietario.

Per modificare i dati recuperati con GET_RECORD_BUFFER è possibile utilizzare la funzione SET_RECORD_BUFFER (vedere "SET_RECORD_BUFFER"). Tuttavia, è necessario comprendere il record di dati come scritto nel formato canonico interno di Oracle GoldenGate. In alternativa, è possibile impostare i valori di colonna nel record di dati con la funzione SET_COLUMN_VALUE_BY_INDEX (vedere) o la funzione SET_COLUMN_VALUE_BY_NAME (vedere "@STRNCMP").

Le eliminazioni, gli inserimenti e gli aggiornamenti vengono visualizzati nel buffer come immagini di record complete.

Gli aggiornamenti SQL compressi hanno il seguente formato:

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

dove:

Per i record SQL, è possibile utilizzare la funzione DECOMPRESS_RECORD ("DECOMPRESS_RECORD") per decomprimere il record per una possibile manipolazione e quindi utilizzare la funzione COMPRESS_RECORD ("COMPRESS_RECORD") per comprimerlo di nuovo, come previsto dal processo.

Sintassi

#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;

Input

<source_or_target>

Una delle seguenti opzioni indica se restituire il buffer di record per il record di dati di origine o di destinazione.

EXIT_FN_SOURCE_VAL
EXIT_FN_TARGET_VAL

<requesting_before_after_ind>

Facoltativa. Imposta quando si richiede un buffer di record in un record io_type di aggiornamento della chiave primaria UPDATE_COMP_PK_SQL_VAL (). Utilizzare una delle seguenti opzioni per indicare a quale parte dell'aggiornamento della chiave primaria è necessario accedere. L'impostazione predefinita è AFTER_IMAGE_VAL.

BEFORE_IMAGE_VAL
AFTER_IMAGE_VAL

Output

<buffer>

Puntatore al buffer dei record. In genere, il buffer è un puntatore a un buffer di tipo exit_rec_buf_def. Il buffer exit_rec_buf_def contiene il record effettivo che verrà elaborato da Extract o Replicat. Il buffer viene fornito quando il tipo di chiamata è EXIT_CALL_DISCARD_RECORD. Le routine di uscita possono modificare il contenuto di questo buffer, ad esempio per eseguire funzioni di mapping personalizzate.

Il contenuto del buffer di record non viene convertito nel o dal set di caratteri dell'uscita utente. È passato così com'è.

<length>

La lunghezza restituita del buffer di record.

<io_type>

Restituito come uno dei seguenti:

SQL_DDL_VAL
DELETE_VAL
INSERT_VAL
UPDATE_VAL
UPDATE_COMP_SQL_VAL
UPDATE_COMP_PK_SQL_VAL
TRUNCATE_TABLE_VAL

<mapped>

Flag (0 o 1) che indica se si tratta o meno di un buffer di record mappato.

<before_after_ind>

Uno dei seguenti elementi per indicare se il record è un'immagine precedente o successiva.

BEFORE_IMAGE_VAL
AFTER_IMAGE_VAL

Valori restituiti

EXIT_FN_RET_INVALID_CONTEXT
EXIT_FN_RET_INVALID_PARAM
EXIT_FN_RET_OK