GET_COL_METADATA_FROM_INDEX
Valido per
Estrai e Replicat
Descrizione
Utilizzare la funzione GET_COL_METADATA_FROM_INDEX per recuperare i metadati delle colonne specificando l'indice della colonna desiderata.
I nomi degli oggetti di database vengono restituiti esattamente come sono definiti nel database di hosting, inclusa la lettera maiuscola.
Sintassi
#include "usrdecs.h"
short result_code;
col_metadata_def column_meta_rec;
ERCALLBACK (GET_COL_METADATA_FROM_INDEX, &column_meta_rec, &result_code);
Buffer
typedef struct
{
short column_index;
char *column_name;
long max_name_length;
short native_data_type;
short gg_data_type;
short gg_sub_data_type;
short is_nullable;
short is_part_of_key;
short key_column_index;
short length;
short precision;
short scale;
short source_or_target;
} col_metadata_def;
Input
<column_index>
Indice di colonna del valore di colonna da restituire.
<max_name_length>
La lunghezza massima del nome colonna restituito. In genere, la lunghezza massima è la lunghezza del buffer di nomi. Poiché il nome restituito è nullo, la lunghezza massima deve essere uguale alla lunghezza massima del nome colonna.
<source_or_target>
Una delle seguenti opzioni indica se il record di origine o di destinazione viene compresso.
EXIT_FN_SOURCE_VAL
EXIT_FN_TARGET_VAL
Output
<column_name>
Nome della colonna del valore della colonna da restituire.
actual_name_length
La lunghezza effettiva del nome restituito.
value_truncated
Flag (0 o 1) per indicare se il valore è stato troncato o meno. La troncatura si verifica se la lunghezza del nome della colonna più il terminatore nullo supera la lunghezza massima del buffer.
<native_data_type>
Il tipo di dati nativo (del database) della colonna. Viene restituito native_data_type o dd_data_type, a seconda del processo, come indicato di seguito.
-
Se Extract effettua la richiesta di callback per una colonna di origine, viene restituito
native_data_type. Se Extract richiede una colonna di destinazione mappata, viene restituitogg_data_type(supponendo che nel sistema sia presente un file di definizioni di destinazione). -
Se una pompa dati Extract effettua la richiesta di callback per una colonna di origine e esiste un database locale, viene restituito
native_data_type. Se non esiste un database, viene restituitogg_data_type(supponendo che nel sistema sia presente un file di definizioni di origine). Se la pompa richiede la colonna di destinazione, viene restituitogg_data_type(supponendo che nel sistema esista un file di definizioni di destinazione). -
Se Replicat effettua la richiesta di callback per la colonna di origine, viene restituito
gg_data_type(supponendo che nel sistema esista un file di definizioni di origine). Se Replicat richiede la colonna di origine e nel file dei parametri viene utilizzatoASSUMETARGETDEFS, viene restituitonative_data_type. Se Replicat richiede la colonna di destinazione, viene restituitonative_data_type.
<gg_data_type>
Tipo di dati di Oracle GoldenGate della colonna.
<gg_sub_data_type>
Sottotipo di Oracle GoldenGate della colonna.
<is_nullable>
Flag che indica se la colonna consente un valore nullo (TRUE o FALSE).
<is_part_of_key>
Flag (TRUE o FALSE) che indica se la colonna fa parte della chiave utilizzata da Oracle GoldenGate.
<key_column_index>
Indica l'ordine delle colonne nell'indice. Ad esempio, la tabella seguente contiene due colonne chiave che esistono in un ordine diverso da quello in cui vengono dichiarate nella chiave primaria.
CREATE TABLE ABC
(
cust_code VARCHAR2(4),
name VARCHAR2(30),
city VARCHAR2(20),
state CHAR(2),
PRIMARY KEY (city, cust_code)
USING INDEX
);
L'esecuzione della funzione di callback per ogni colonna nell'ordine delle colonne logiche restituisce quanto segue:
-
cust_coderestituisce1 -
namerestituisce-1 -
cityrestituisce0 -
staterestituisce-1
Se la colonna fa parte della chiave, il valore restituito corrisponde all'ordine della colonna all'interno della chiave.
Se la colonna non fa parte della chiave, viene restituito il valore -1.
<length>
Restituisce la lunghezza della colonna.
<precision>
Se si tratta di un tipo di dati numerico, restituisce la precisione della colonna.
<scale>
Se si tratta di un tipo di dati numerico, restituisce la scala.
Valori restituiti
EXIT_FN_RET_INVALID_PARAM
EXIT_FN_RET_INVALID_CONTEXT
EXIT_FN_RET_EXCEEDED_MAX_LENGTH
EXIT_FN_RET_INVALID_COLUMN
EXIT_FN_RET_OK