SET_COLUMN_VALUE_BY_NAME
Válido para
Extraer y Replicat
Descripción
Utilice la función SET_COLUMN_VALUE_BY_NAME o SET_COLUMN_VALUE_BY_INDEX 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:
-
El valor de columna es un tipo de carácter SQL (
CHAR/VARCHAR2/CLOB,NCHAR/NVARCHAR2/NCLOB), una fecha/registro de hora/intervalo/tipo de número SQL -
El indicador
column_value_modese define enEXIT_FN_CNVTED_SESS_CHAR_FORMAT.
Si la base de datos distingue entre mayúsculas y minúsculas, los nombres de objetos se deben especificar en las mismas mayúsculas y minúsculas que se definen en la base de datos de alojamiento; de lo contrario, las mayúsculas y minúsculas no importan.
Sintaxis
#include "usrdecs.h"
short result_code;
column_def column;
ERCALLBACK (SET_COLUMN_VALUE_BY_NAME, &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_name>
Nombre de la columna que corresponde al nuevo valor de columna que se va a copiar en el buffer de registro de datos.
<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.
-
Las fechas tienen el formato
CCYY-MM-DD HH:MI:SS.FFFFFF, en el que el tiempo fraccional depende de la base de datos. -
Los valores numéricos tienen el formato de cadena. Por ejemplo,
123.45se representa como'123.45'. -
Los caracteres no imprimibles o los valores binarios se convierten en notación hexadecimal.
-
Los tipos de punto flotante se muestran como cadenas de terminación nula, con los primeros 14 dígitos significativos.
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:
-
un tipo basado en caracteres, uno o varios bytes
-
un tipo numérico con una representación de cadena
Este formato no es nulo.
<source_or_target>
Una de las siguientes indicaciones indica si el registro de datos 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.
-
BEFORE_IMAGE_VAL -
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