SET_COLUMN_VALUE_BY_INDEX
有效對象
擷取與 Replicat
說明
使用 SET_COLUMN_VALUE_BY_INDEX 或 SET_COLUMN_VALUE_BY_NAME 函數來修改單一資料欄值,而不操控整個資料記錄。如果使用者結束程式的字元階段作業使用 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_INDEX, &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_value>
指示新資料欄值是否為空值的旗標 (0 或 1)。如果 null_value 旗標設為 1,則資料記錄中的資料欄值會設為空值。
<remove_column>
旗標 (0 或 1),指示是否從壓縮的更新移除資料欄 (如果有的話)。壓縮更新是僅記錄變更之資料欄值的更新,而不是所有資料欄值。只有在記錄的作業類型為 UPDATE_COMP_SQL_VAL 或 PK_UPDATE_SQL_VAL 時,才應設定此旗標。
<column_index>
要複製到資料記錄緩衝區之新資料欄值的資料欄索引。資料欄索引從零開始。
<column_value_mode>
表示資料欄值的格式。
EXIT_FN_CHAR_FORMAT
ASCII 格式:此值為空值終止的 ASCII (或 EBCDIC) 字串 (子資料類型 UTF16_BE 的已知異常狀況,會轉換成 UTF 8)。注意:呈現給使用者結束程式時,可能會截斷資料欄值,因為該值會解譯為 ASCII 字串,且應為空值終止。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
使用者結束字元集:只有在資料欄資料類型為:
-
以字元為基礎的類型,單一或多重位元組
-
以字串表示的數值類型
此格式不是空值終止格式。
<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