GET_RECORD_BUFFER

Durée de validité

Extraction et réplication

Description

Utilisez la fonction GET_RECORD_BUFFER pour obtenir des informations sur les conversions de colonne personnalisées. Les exits utilisateur peuvent être utilisés pour la mise en correspondance de données entre des enregistrements source et cible différents lorsque l'option COLMAP du paramètre MAP ou TABLE n'est pas suffisante. Par exemple, vous pouvez utiliser un user exit pour convertir un champ de date propriétaire.

Vous pouvez utiliser la fonction SET_RECORD_BUFFER (reportez-vous à "SET_RECORD_BUFFER") pour modifier les données extraites avec GET_RECORD_BUFFER. Toutefois, elle nécessite une compréhension de l'enregistrement de données tel qu'il est écrit dans le format canonique Oracle GoldenGate interne. Vous pouvez également définir des valeurs de colonne dans l'enregistrement de données à l'aide de la fonction SET_COLUMN_VALUE_BY_INDEX (voir) ou de la fonction SET_COLUMN_VALUE_BY_NAME (voir "@STRNCMP").

Les suppressions, insertions et mises à jour apparaissent dans le tampon sous forme d'images d'enregistrement complet.

Les mises à jour SQL compressées ont le format suivant :

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

où :

Pour les enregistrements SQL, vous pouvez utiliser la fonction DECOMPRESS_RECORD ("DECOMPRESS_RECORD") pour décompresser l'enregistrement en vue d'une éventuelle manipulation, puis utiliser la fonction COMPRESS_RECORD ("COMPRESS_RECORD") pour le compresser à nouveau, comme prévu par le processus.

Syntaxe

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

Tampon

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;

Entrée

<source_or_target>

L'un des éléments suivants indique si le tampon d'enregistrement doit être renvoyé pour l'enregistrement de données source ou cible.

EXIT_FN_SOURCE_VAL
EXIT_FN_TARGET_VAL

<requesting_before_after_ind>

Facultatif. Définir lors de la demande d'un tampon d'enregistrement sur un enregistrement io_type de UPDATE_COMP_PK_SQL_VAL (mise à jour de clé primaire). Utilisez l'une des méthodes suivantes pour indiquer quelle partie de la mise à jour de clé primaire doit être accessible. La valeur par défaut est AFTER_IMAGE_VAL.

BEFORE_IMAGE_VAL
AFTER_IMAGE_VAL

Sortie

<buffer>

Pointeur vers le tampon d'enregistrement. En général, le tampon est un pointeur vers un tampon de type exit_rec_buf_def. Le tampon exit_rec_buf_def contient l'enregistrement réel sur le point d'être traité par le processus d'extraction ou de réplication. Le tampon est fourni lorsque le type d'appel est EXIT_CALL_DISCARD_RECORD. Les routines de sortie peuvent modifier le contenu de cette mémoire tampon, par exemple, pour exécuter des fonctions de mapping personnalisées.

Le contenu du tampon d'enregistrement n'est pas converti dans ou depuis le jeu de caractères de l'exit utilisateur. Il est transmis tel quel.

<length>

Longueur renvoyée par le tampon d'enregistrement.

<io_type>

Renvoyé comme l'un des éléments suivants :

SQL_DDL_VAL
DELETE_VAL
INSERT_VAL
UPDATE_VAL
UPDATE_COMP_SQL_VAL
UPDATE_COMP_PK_SQL_VAL
TRUNCATE_TABLE_VAL

<mapped>

Indicateur (0 ou 1) indiquant s'il s'agit ou non d'un tampon d'enregistrement mis en correspondance.

<before_after_ind>

L'une des options suivantes indique si l'enregistrement est une image avant ou après.

BEFORE_IMAGE_VAL
AFTER_IMAGE_VAL

Valeurs retournées

EXIT_FN_RET_INVALID_CONTEXT
EXIT_FN_RET_INVALID_PARAM
EXIT_FN_RET_OK