SET_COLUMN_VALUE_BY_INDEX
Valido per
Estrai e Replicat
Descrizione
Utilizzare la funzione SET_COLUMN_VALUE_BY_INDEX o SET_COLUMN_VALUE_BY_NAME per modificare un valore di colonna singola senza modificare l'intero record di dati. Se la sessione dei caratteri dell'uscita utente è impostata con SET_SESSION_CHARSET su un valore diverso dal set di caratteri predefinito del sistema operativo, come definito in ULIB_CS_DEFAULT nel file ucharset.h, i dati dei caratteri scambiati tra l'uscita utente e il processo vengono interpretati nel set di caratteri della sessione.
Un valore di colonna viene impostato sul set di caratteri della sessione solo se è vero quanto segue:
-
Il valore della colonna è un tipo di carattere SQL (
CHAR/VARCHAR2/CLOB,NCHAR/NVARCHAR2/NCLOB), una data SQL/indicatore data/ora/intervallo/tipo di numero -
L'indicatore
column_value_modeè impostato suEXIT_FN_CNVTED_SESS_CHAR_FORMAT.
Sintassi
#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;
Input
<column_value>
Un puntatore a un buffer che rappresenta il nuovo valore di colonna.
<actual_value_length>
Lunghezza del nuovo valore di colonna, in byte. La lunghezza effettiva non deve includere il terminatore nullo se il nuovo valore di colonna è in formato ASCII.
<null_value>
Flag (0 o 1) che indica se il nuovo valore di colonna è nullo. Se il flag null_value è impostato su 1, il valore della colonna nel record di dati viene impostato su null.
<remove_column>
Flag (0 o 1) che indica se rimuovere la colonna da un aggiornamento compresso, se esistente. Un aggiornamento compresso è un aggiornamento in cui vengono registrati solo i valori di colonna modificati, non tutti i valori di colonna. Questo flag deve essere impostato solo se il tipo di operazione per il record è UPDATE_COMP_SQL_VAL o PK_UPDATE_SQL_VAL.
<column_index>
Indice di colonna del nuovo valore di colonna da copiare nel buffer dei record di dati. Gli indici delle colonne iniziano a zero.
<column_value_mode>
Indica il formato del valore della colonna.
EXIT_FN_CHAR_FORMAT
Formato ASCII: il valore è una stringa ASCII (o EBCDIC) con terminazione nulla (con un'eccezione nota per il tipo di dati secondari UTF16_BE, che viene convertito in UTF 8). Nota: un valore di colonna potrebbe essere troncato quando viene presentato a un'uscita utente, perché il valore viene interpretato come una stringa ASCII e dovrebbe essere nullo. Il primo valore di 0 diventa il terminatore di stringa.
-
Le date sono nel formato
CCYY-MM-DD HH:MI:SS.FFFFFF, in cui il tempo frazionario dipende dal database. -
I valori numerici sono nel formato stringa. Ad esempio,
123.45è rappresentato come'123.45'. -
I caratteri non stampabili o i valori binari vengono convertiti in notazione esadecimale.
-
I tipi a virgola mobile vengono generati come stringhe con terminazione nulla, fino alle prime 14 cifre significative.
EXIT_FN_RAW_FORMAT
Formato canonico interno di Oracle GoldenGate: questo formato include un indicatore nullo a due byte e una lunghezza dei dati della variabile a due byte, se applicabile. Oracle GoldenGate non esegue alcuna conversione del set di caratteri per questo formato per alcun tipo di dati carattere.
EXIT_FN_CNVTED_SESS_CHAR_FORMAT
Set di caratteri di uscita utente: si applica solo se il tipo di dati della colonna è:
-
tipo basato su caratteri, singolo o multibyte
-
un tipo numerico con una rappresentazione stringa
Questo formato non è nullo.
<source_or_target>
Una delle seguenti opzioni indica se il record di origine o di destinazione viene modificato.
EXIT_FN_SOURCE_VAL
EXIT_FN_TARGET_VAL
<requesting_before_after_ind>
Imposta quando si imposta un valore di colonna in un record io_type di UPDATE_COMP_PK_SQL_VAL (aggiornamento chiave primaria). Utilizzare una delle seguenti opzioni per indicare a quale parte dell'aggiornamento della chiave primaria è necessario accedere. L'impostazione predefinita è AFTER_IMAGE_VAL.
-
BEFORE_IMAGE_VAL -
AFTER_IMAGE_VAL
Output
Nessuno
Valori restituiti
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