GET_RECORD_BUFFER
Gültig für
Extrakt und Replicat
Beschreibung
Mit der Funktion GET_RECORD_BUFFER können Sie Informationen für benutzerdefinierte Spaltenkonvertierungen abrufen. User Exits können für die Datenzuordnung zwischen unterschiedlichen Quell- und Zieldatensätzen verwendet werden, wenn die Option COLMAP des Parameters MAP oder TABLE nicht ausreicht. Beispiel: Mit einem User Exit können Sie ein proprietäres Datumsfeld konvertieren.
Mit der Funktion SET_RECORD_BUFFER (siehe "SET_RECORD_BUFFER") können Sie die mit GET_RECORD_BUFFER abgerufenen Daten ändern. Es erfordert jedoch ein Verständnis des Datensatzes, wie er im internen kanonischen Oracle GoldenGate-Format geschrieben wurde. Alternativ können Sie Spaltenwerte im Datensatz mit der Funktion SET_COLUMN_VALUE_BY_INDEX (siehe) oder der Funktion SET_COLUMN_VALUE_BY_NAME festlegen (siehe "@STRNCMP").
Löschvorgänge, Einfügungen und Aktualisierungen werden im Puffer als vollständige Aufzeichnungsbilder angezeigt.
Komprimierte SQL-Updates haben das folgende Format:
<index> <length> <value> [<index> <length> <value> ][...]
wobei:
-
<index>ist ein Zwei-Byte-Index in der Liste der Spalten der Tabelle (erste Spalte ist Null). -
<length>ist die zwei Byte lange Tabelle. -
<value>ist der tatsächliche Spaltenwert, einschließlich eines der folgenden Zwei-Byte-Nullindikatoren, sofern zutreffend.0ist nicht null.-1ist null.
Bei SQL-Datensätzen können Sie die Funktion DECOMPRESS_RECORD ("DECOMPRESS_RECORD") verwenden, um den Datensatz für eine mögliche Bearbeitung zu dekomprimieren, und dann die Funktion COMPRESS_RECORD ("COMPRESS_RECORD") verwenden, um ihn wie vom Prozess erwartet erneut zu komprimieren.
Syntax
#include "usrdecs.h"
short result_code;
record_def record;
ERCALLBACK (GET_RECORD_BUFFER, &record, &result_code);
Puffer
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;
Eingabe
<source_or_target>
Eine der folgenden Optionen gibt an, ob der Datensatzpuffer für den Quell- oder Zieldatensatz zurückgegeben werden soll.
EXIT_FN_SOURCE_VAL
EXIT_FN_TARGET_VAL
<requesting_before_after_ind>
Optional. Wird festgelegt, wenn ein Datensatzpuffer für einen Datensatz io_type von UPDATE_COMP_PK_SQL_VAL (Primärschlüsselaktualisierung angefordert wird.) Verwenden Sie eine der folgenden Optionen, um anzugeben, auf welchen Teil der Primärschlüsselaktualisierung zugegriffen werden soll. Der Standardwert ist AFTER_IMAGE_VAL.
BEFORE_IMAGE_VAL
AFTER_IMAGE_VAL
Ausgabe
<buffer>
Ein Zeiger auf den Datensatzpuffer. Normalerweise ist der Puffer ein Zeiger auf einen Puffer vom Typ exit_rec_buf_def. Der Puffer exit_rec_buf_def enthält den tatsächlichen Datensatz, der von Extract oder Replicat verarbeitet werden soll. Der Puffer wird angegeben, wenn der Aufruftyp EXIT_CALL_DISCARD_RECORD ist. Beendigungsroutinen können den Inhalt dieses Puffers ändern, beispielsweise um benutzerdefinierte Zuordnungsfunktionen auszuführen.
Der Inhalt des Datensatzpuffers wird nicht in oder aus dem Zeichensatz des User Exit konvertiert. Wird unverändert übergeben.
<length>
Die zurückgegebene Länge des Datensatzpuffers.
<io_type>
Als einer der Folgenden zurückgegeben:
DDL-Typ:
SQL_DDL_VAL
- Typen
DML:
DELETE_VAL
INSERT_VAL
UPDATE_VAL
- Komprimierte SQL-Aktualisierung:
UPDATE_COMP_SQL_VAL
UPDATE_COMP_PK_SQL_VAL
- Sonstiges:
TRUNCATE_TABLE_VAL
<mapped>
Ein Flag (0 oder 1), das angibt, ob es sich um einen zugeordneten Datensatzpuffer handelt.
<before_after_ind>
Eine der folgenden Optionen gibt an, ob der Datensatz ein Vorher- oder Nachher-Bild ist.
BEFORE_IMAGE_VAL
AFTER_IMAGE_VAL
Rückgabewerte
EXIT_FN_RET_INVALID_CONTEXT
EXIT_FN_RET_INVALID_PARAM
EXIT_FN_RET_OK