GET_COL_METADATA_FROM_INDEX
Válido Para
Extract e Replicat
Descrição
Use a função GET_COL_METADATA_FROM_INDEX para recuperar metadados de coluna especificando o índice da coluna desejada.
Os nomes de objeto de banco de dados são retornados exatamente como são definidos no banco de dados de hospedagem, incluindo a letra maiúscula.
Sintaxe
#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;
Entrada
<column_index>
O índice de coluna do valor de coluna a ser retornado.
<max_name_length>
O tamanho máximo do nome da coluna retornada. Normalmente, o tamanho máximo é o tamanho do buffer de nome. Como o nome retornado é nulo terminado, o comprimento máximo deve ser igual ao comprimento máximo do nome da coluna.
<source_or_target>
Um dos itens a seguir indica se o registro de origem ou de destino está sendo compactado.
EXIT_FN_SOURCE_VAL
EXIT_FN_TARGET_VAL
Saída
<column_name>
O nome da coluna do valor a ser retornado.
actual_name_length
O tamanho real do nome retornado.
value_truncated
Um flag (0 ou 1) para indicar se o valor foi truncado ou não. Ocorre truncamento se o tamanho do nome da coluna mais o terminador nulo exceder o tamanho máximo do buffer.
<native_data_type>
O tipo de dados nativo (para o banco de dados) da coluna. native_data_type ou dd_data_type é retornado, dependendo do processo, da seguinte forma:
-
Se o Extract estiver fazendo a solicitação de callback para uma coluna de origem,
native_data_typeserá retornado. Se o Extract estiver solicitando uma coluna de destino mapeada,gg_data_typeserá retornado (supondo que haja um arquivo de definições de destino no sistema). -
Se um data pump do Extract estiver fazendo a solicitação de callback para uma coluna de origem e houver um banco de dados local,
native_data_typeserá retornado. Se não houver banco de dados,gg_data_typeserá retornado (supondo que haja um arquivo de definições de origem no sistema). Se a bomba estiver solicitando a coluna de destino,gg_data_typeserá retornado (pressupondo que exista um arquivo de definições de destino no sistema). -
Se o Replicat estiver fazendo a solicitação de callback para a coluna de origem,
gg_data_typeserá retornado (supondo que exista um arquivo de definições de origem no sistema). Se o Replicat estiver solicitando a coluna de origem e oASSUMETARGETDEFSestiver sendo usado no arquivo de parâmetros, onative_data_typeserá retornado. Se o Replicat estiver solicitando a coluna de destino,native_data_typeserá retornado.
<gg_data_type>
O tipo de dados do Oracle GoldenGate da coluna.
<gg_sub_data_type>
O subtipo do Oracle GoldenGate da coluna.
<is_nullable>
Indicador que mostra se a coluna permite um valor nulo (TRUE ou FALSE).
<is_part_of_key>
Flag (TRUE ou FALSE) que indica se a coluna faz parte da chave que está sendo usada pelo Oracle GoldenGate.
<key_column_index>
Indica a ordem de colunas no índice. Por exemplo, a tabela a seguir tem duas colunas de chave que existem em uma ordem diferente da ordem em que são declaradas na chave primária.
CREATE TABLE ABC
(
cust_code VARCHAR2(4),
name VARCHAR2(30),
city VARCHAR2(20),
state CHAR(2),
PRIMARY KEY (city, cust_code)
USING INDEX
);
A execução da função de callback para cada coluna na ordem de coluna lógica retorna o seguinte:
-
cust_coderetorna1 -
nameretorna-1 -
cityretorna0 -
stateretorna-1
Se a coluna fizer parte da chave, o valor retornado será a ordem da coluna dentro da chave.
Se a coluna não fizer parte da chave, um valor -1 será retornado.
<length>
Retorna o tamanho da coluna.
<precision>
Se um tipo de dados numérico, retorna a precisão da coluna.
<scale>
Se um tipo de dados numérico, retorna a escala.
Valores de Retorno
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