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:

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.

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:

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.

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