SET_COLUMN_VALUE_BY_INDEX
Gültig für
Extract und Replicat
Beschreibung
Mit der Funktion SET_COLUMN_VALUE_BY_INDEX oder SET_COLUMN_VALUE_BY_NAME können Sie einen einzelnen Spaltenwert ändern, ohne den gesamten Datensatz zu bearbeiten. Wenn die Zeichensession des User Exit mit SET_SESSION_CHARSET auf einen anderen Wert als den Standardzeichensatz des Betriebssystems gesetzt wird, wie in ULIB_CS_DEFAULT in der Datei ucharset.h definiert, werden die Zeichendaten, die zwischen dem User Exit und dem Prozess ausgetauscht werden, im Sessionzeichensatz interpretiert.
Ein Spaltenwert wird nur dann auf den Sessionzeichensatz gesetzt, wenn Folgendes zutrifft:
-
Der Spaltenwert ist ein SQL-Zeichentyp (
CHAR/VARCHAR2/CLOB,NCHAR/NVARCHAR2/NCLOB), ein SQL-Datentyp für Datum/Zeitstempel/Intervall/Zahl -
Der Indikator
column_value_modeist aufEXIT_FN_CNVTED_SESS_CHAR_FORMATgesetzt.
Syntax
#include "usrdecs.h"
short result_code;
column_def column;
ERCALLBACK (SET_COLUMN_VALUE_BY_INDEX, &column, &result_code);
Puffer
typedef struct
{
char *column_value;
unsigned short max_value_length;
unsigned short actual_value_length;
short null_value;
short remove_column;
short value_truncated;
short column_index;
char *column_name;
/* Version 3 CALLBACK_STRUCT_VERSION */
short column_value_mode;
short source_or_target;
/* Version 2 CALLBACK_STRUCT_VERSION */
char requesting_before_after_ind;
char more_lob_data;
/* Version 3 CALLBACK_STRUCT_VERSION */
ULibCharSet column_charset;
} column_def;
Eingabe
<column_value>
Ein Zeiger auf einen Puffer, der den neuen Spaltenwert darstellt.
<actual_value_length>
Die Länge des neuen Spaltenwertes in Byte. Die tatsächliche Länge darf den Null-Terminator nicht enthalten, wenn der neue Spaltenwert im ASCII-Format vorliegt.
<null_value>
Ein Flag (0 oder 1), das angibt, ob der neue Spaltenwert Null ist. Wenn das Flag null_value auf 1 gesetzt ist, wird der Spaltenwert im Datensatz auf Null gesetzt.
<remove_column>
Ein Flag (0 oder 1), das angibt, ob die Spalte aus einem komprimierten Update entfernt werden soll, sofern vorhanden. Eine komprimierte Aktualisierung ist eine Aktualisierung, bei der nur die geänderten Spaltenwerte protokolliert werden, nicht alle Spaltenwerte. Dieses Kennzeichen darf nur gesetzt werden, wenn der Vorgangstyp für den Datensatz UPDATE_COMP_SQL_VAL oder PK_UPDATE_SQL_VAL lautet.
<column_index>
Der Spaltenindex des neuen Spaltenwertes, der in den Datensatzpuffer kopiert werden soll. Spaltenindizes beginnen bei Null.
<column_value_mode>
Gibt das Format des Spaltenwertes an.
EXIT_FN_CHAR_FORMAT
ASCII-Format: Der Wert ist eine Null-beendete ASCII-Zeichenfolge (oder EBCDIC-Zeichenfolge) (mit einer bekannten Ausnahme für den Unterdatentyp UTF16_BE, der in UTF 8 konvertiert wird). Hinweis: Ein Spaltenwert kann abgeschnitten werden, wenn er einem User Exit angezeigt wird, da der Wert als ASCII-Zeichenfolge interpretiert wird und null-terminiert sein soll. Der erste Wert von 0 wird zum Zeichenfolgenabschlusszeichen.
-
Datumsangaben haben das Format
CCYY-MM-DD HH:MI:SS.FFFFFF, in dem die Bruchzeit datenbankabhängig ist. -
Numerische Werte haben das Zeichenfolgenformat. Beispiel:
123.45wird als'123.45'dargestellt. -
Nicht druckbare Zeichen oder Binärwerte werden in hexadezimale Notation konvertiert.
-
Gleitkommatypen werden als nullbeendete Zeichenfolgen in die ersten 14 signifikanten Ziffern ausgegeben.
EXIT_FN_RAW_FORMAT
Internes kanonisches Oracle GoldenGate-Format: Dieses Format enthält einen Zwei-Byte-Null-Indikator und gegebenenfalls eine Zwei-Byte-Variablendatenlänge. Oracle GoldenGate führt keine Zeichensatzkonvertierung für dieses Format für jeden Zeichendatentyp aus.
EXIT_FN_CNVTED_SESS_CHAR_FORMAT
User Exit-Zeichensatz: Gilt nur, wenn der Spaltendatentyp:
-
ein zeichenbasierter Typ, ein- oder mehrbyte
-
einen numerischen Typ mit einer Zeichenfolgendarstellung
Dieses Format ist nicht Null-beendet.
<source_or_target>
Eine der folgenden Optionen gibt an, ob der Quell- oder Zieldatensatz geändert wird.
EXIT_FN_SOURCE_VAL
EXIT_FN_TARGET_VAL
<requesting_before_after_ind>
Wird festgelegt, wenn ein Spaltenwert in einem Datensatz io_type von UPDATE_COMP_PK_SQL_VAL festgelegt wird (Primärschlüsselaktualisierung). 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
Keine
Rückgabewerte
EXIT_FN_RET_BAD_COLUMN_DATA
EXIT_FN_RET_INVALID_COLUMN
EXIT_FN_RET_INVALID_CONTEXT
EXIT_FN_RET_INVALID_PARAM
EXIT_FN_RET_OK
EXIT_FN_RET_NOT_SUPPORTED
EXIT_FN_RET_INVALID_COLUMN_TYPE