SET_COLUMN_VALUE_BY_INDEX

Válido para

Extraer y Replicat

Descripción

Utilice la función SET_COLUMN_VALUE_BY_INDEX o SET_COLUMN_VALUE_BY_NAME para modificar un único valor de columna sin manipular todo el registro de datos. Si la sesión de caracteres de la salida de usuario se define con SET_SESSION_CHARSET en un valor distinto del juego de caracteres por defecto del sistema operativo, como se define en ULIB_CS_DEFAULT en el archivo ucharset.h, los datos de caracteres que se intercambian entre la salida de usuario y el proceso se interpretan en el juego de caracteres de la sesión.

Un valor de columna se define en el juego de caracteres de la sesión solo si se cumple lo siguiente:

Sintaxis

#include "usrdecs.h"
short result_code;
column_def column;
ERCALLBACK (SET_COLUMN_VALUE_BY_INDEX, &column, &result_code);

Buffer

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;

Entrada

<column_value>

Puntero a un buffer que representa el nuevo valor de columna.

<actual_value_length>

Longitud del nuevo valor de columna, en bytes. La longitud real no debe incluir el terminador nulo si el nuevo valor de columna está en formato ASCII.

<null_value>

Indicador (0 o 1) que indica si el nuevo valor de columna es nulo. Si el indicador null_value se define en 1, el valor de columna del registro de datos se define en nulo.

<remove_column>

Indicador (0 o 1) que indica si se debe eliminar la columna de una actualización comprimida si existe. Una actualización comprimida es aquella en la que solo se registran los valores de columna modificados, no todos los valores de columna. Este indicador solo se debe definir si el tipo de operación para el registro es UPDATE_COMP_SQL_VAL o PK_UPDATE_SQL_VAL.

<column_index>

Índice de columna del nuevo valor de columna que se va a copiar en el buffer de registro de datos. Los índices de columna comienzan en cero.

<column_value_mode>

Indica el formato del valor de columna.

EXIT_FN_CHAR_FORMAT

Formato ASCII: el valor es una cadena ASCII (o EBCDIC) con terminación nula (con una excepción conocida para el tipo de subdatos UTF16_BE, que se convierte a UTF 8). Nota: Un valor de columna se puede truncar cuando se presenta a una salida de usuario, porque el valor se interpreta como una cadena ASCII y se supone que está terminada en un valor nulo. El primer valor de 0 se convierte en el terminador de cadena.

EXIT_FN_RAW_FORMAT

Formato canónico interno de Oracle GoldenGate: este formato incluye un indicador nulo de dos bytes y una longitud de datos variable de dos bytes cuando corresponde. Oracle GoldenGate no realiza ninguna conversión de juego de caracteres para este formato para ningún tipo de dato de carácter.

EXIT_FN_CNVTED_SESS_CHAR_FORMAT

Juego de caracteres de salida de usuario: esto solo se aplica si el tipo de dato de columna es:

Este formato no es nulo.

<source_or_target>

Una de las siguientes indicaciones indica si el registro de origen o de destino se está modificando.

EXIT_FN_SOURCE_VAL
EXIT_FN_TARGET_VAL

<requesting_before_after_ind>

Se define al definir un valor de columna en un registro io_type de UPDATE_COMP_PK_SQL_VAL (actualización de clave primaria). Utilice una de las siguientes opciones para indicar a qué parte de la actualización de clave primaria se debe acceder. El valor por defecto es AFTER_IMAGE_VAL.

Salida

Ninguno

Valores devueltos

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