SET_COLUMN_VALUE_BY_NAME
有效对象
提取和复制
说明
使用 SET_COLUMN_VALUE_BY_NAME 或 SET_COLUMN_VALUE_BY_INDEX 函数可修改单个列值,而无需处理整个数据记录。
如果使用 SET_SESSION_CHARSET 将用户出口的字符会话设置为 ucharset.h 文件的 ULIB_CS_DEFAULT 中定义的操作系统默认字符集以外的值,则将在会话字符集中解释用户出口和进程之间交换的字符数据。
仅当满足以下条件时,才会将列值设置为会话字符集:
-
列值为 SQL 字符类型(
CHAR/VARCHAR2/CLOB、NCHAR/NVARCHAR2/NCLOB)、SQL 日期/时间戳/间隔/数字类型 ) -
column_value_mode指示器设置为EXIT_FN_CNVTED_SESS_CHAR_FORMAT。
如果数据库区分大小写,则必须使用与托管数据库中定义的对象名称相同的字母大小写指定对象名称;否则,大小写无关紧要。
语法
#include "usrdecs.h"
short result_code;
column_def column;
ERCALLBACK (SET_COLUMN_VALUE_BY_NAME, &column, &result_code);
缓冲区
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;
输入
<column_value>
指向表示新列值的缓冲区的指针。
<actual_value_length>
新列值的长度(字节)。如果新列值采用 ASCII 格式,则实际长度不应包含 NULL 终结符。
<null_value>
指示新列值是否为空值的标志(0 或 1)。如果 null_value 标志设置为 1,则数据记录中的列值将设置为 NULL。
<remove_column>
指示是否从压缩更新中删除列的标志(0 或 1)(如果存在)。压缩更新是仅记录更改的列值,而不是记录所有列值的更新。仅当记录的操作类型为 UPDATE_COMP_SQL_VAL 或 PK_UPDATE_SQL_VAL 时才应设置此标志。
<column_name>
与要复制到数据记录缓冲区中的新列值相对应的列的名称。
<column_value_mode>
指明列值的格式。
EXIT_FN_CHAR_FORMAT
ASCII 格式:该值是以 null 结尾的 ASCII(或 EBCDIC)字符串(子数据类型 UTF16_BE 已有例外,该类型转换为 UTF 8。)注意:当向用户出口显示列值时,列值可能会被截断,因为该值被解释为 ASCII 字符串,并且应该以 null 结尾。0 的第一个值将成为字符串终止符。
-
日期的格式为
CCYY-MM-DD HH:MI:SS.FFFFFF,其中小数时间与数据库相关。 -
数字值采用其字符串格式。例如,
123.45表示为'123.45'。 -
不可打印的字符或二进制值将转换为十六进制表示法。
-
浮点类型以空结尾的字符串形式输出到前 14 个有效数字。
EXIT_FN_RAW_FORMAT
内部 Oracle GoldenGate 规范格式:此格式包括两个字节的空指示符和两个字节的变量数据长度(如果适用)。对于任何字符数据类型,Oracle GoldenGate 不会为此格式执行字符集转换。
EXIT_FN_CNVTED_SESS_CHAR_FORMAT
用户出口字符集:仅当列数据类型为:
-
基于字符的类型,单字节或多字节
-
具有字符串表示形式的数字类型
此格式未以 NULL 结尾。
<source_or_target>
以下项之一,指示正在修改源数据记录还是目标数据记录。
EXIT_FN_SOURCE_VAL
EXIT_FN_TARGET_VAL
<requesting_before_after_ind>
在 UPDATE_COMP_PK_SQL_VAL(主键更新)的记录 io_type 上设置列值时设置。使用以下选项之一指明要访问主键更新的哪个部分。默认值为 AFTER_IMAGE_VAL。
-
BEFORE_IMAGE_VAL -
AFTER_IMAGE_VAL
输出
无
返回值
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