SET_COLUMN_VALUE_BY_INDEX
Válido Para
Extract e Replicat
Descrição
Use a função SET_COLUMN_VALUE_BY_INDEX ou SET_COLUMN_VALUE_BY_NAME para modificar um único valor de coluna sem manipular todo o registro de dados. Se a sessão de caracteres da saída do usuário for definida com SET_SESSION_CHARSET para um valor diferente do conjunto de caracteres padrão do sistema operacional, conforme definido em ULIB_CS_DEFAULT no arquivo ucharset.h, os dados de caracteres que são trocados entre a saída do usuário e o processo serão interpretados no conjunto de caracteres da sessão.
Um valor de coluna será definido como o conjunto de caracteres da sessão somente se o seguinte for verdadeiro:
-
O valor da coluna é um tipo de caractere SQL (
CHAR/VARCHAR2/CLOB,NCHAR/NVARCHAR2/NCLOB), um tipo de data/timestamp/intervalo/número SQL -
O indicador
column_value_modeé definido comoEXIT_FN_CNVTED_SESS_CHAR_FORMAT.
Sintaxe
#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>
Um ponteiro para um buffer que representa o novo valor da coluna.
<actual_value_length>
O tamanho do novo valor de coluna, em bytes. O tamanho real não deverá incluir o terminador nulo se o novo valor da coluna estiver no formato ASCII.
<null_value>
Um flag (0 ou 1) indicando se o novo valor da coluna é nulo. Se o flag null_value for definido como 1, o valor da coluna no registro de dados será definido como nulo.
<remove_column>
Um flag (0 ou 1) que indica se a coluna deve ser removida de uma atualização compactada, se ela existir. Uma atualização compactada é aquela na qual somente os valores de coluna alterados são registrados, e não todos os valores de coluna. Esse flag só deverá ser definido se o tipo de operação do registro for UPDATE_COMP_SQL_VAL ou PK_UPDATE_SQL_VAL.
<column_index>
O índice de coluna do novo valor de coluna a ser copiado no buffer de registro de dados. Os índices de coluna começam em zero.
<column_value_mode>
Indica o formato do valor da coluna.
EXIT_FN_CHAR_FORMAT
Formato ASCII: O valor é uma string ASCII (ou EBCDIC) terminada com nulo (com uma exceção conhecida para o tipo de subdados UTF16_BE, que é convertido em UTF 8.) Observação: Um valor de coluna pode ser truncado quando apresentado a uma saída de usuário, porque o valor é interpretado como uma string ASCII e deve ser encerrado como nulo. O primeiro valor de 0 se torna o terminador de string.
-
As datas estão no formato
CCYY-MM-DD HH:MI:SS.FFFFFF, no qual o tempo fracionário depende do banco de dados. -
Os valores numéricos estão no formato de string. Por exemplo,
123.45é representado como'123.45'. -
Caracteres não imprimíveis ou valores binários são convertidos em notação hexadecimal.
-
Os tipos de ponto flutuante são gerados como strings terminadas como nulas, com os primeiros 14 dígitos significativos.
EXIT_FN_RAW_FORMAT
Formato canônico interno do Oracle GoldenGate: Este formato inclui um indicador nulo de dois bytes e um tamanho de dados variável de dois bytes, quando aplicável. O Oracle GoldenGate não faz nenhuma conversão de conjuntos de caracteres para esse formato em nenhum tipo de dados de caracteres.
EXIT_FN_CNVTED_SESS_CHAR_FORMAT
Conjunto de caracteres de saída do usuário: Isso só se aplica se o tipo de dados da coluna for:
-
um tipo baseado em caracteres, único ou multibytes
-
um tipo numérico com uma representação de string
Este formato não é encerrado como nulo.
<source_or_target>
Um dos itens a seguir indica se o registro de origem ou de destino está sendo modificado.
EXIT_FN_SOURCE_VAL
EXIT_FN_TARGET_VAL
<requesting_before_after_ind>
Defina ao definir um valor de coluna em um registro io_type de UPDATE_COMP_PK_SQL_VAL (atualização de chave primária). Use uma das opções a seguir para indicar qual parte da atualização de chave primária deve ser acessada. O padrão é AFTER_IMAGE_VAL.
-
BEFORE_IMAGE_VAL -
AFTER_IMAGE_VAL
Saída
Nenhum
Valores de Retorno
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