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:

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.

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:

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.

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