GET_COL_METADATA_FROM_INDEX
有效對象
擷取與 Replicat
說明
使用 GET_COL_METADATA_FROM_INDEX 函數指定所需資料欄的索引,以擷取資料欄描述資料。
資料庫物件名稱的傳回方式與代管資料庫中定義的名稱完全相同,包括字母大小寫。
語法
#include "usrdecs.h"
short result_code;
col_metadata_def column_meta_rec;
ERCALLBACK (GET_COL_METADATA_FROM_INDEX, &column_meta_rec, &result_code);
緩衝區
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;
輸入
<column_index>
要傳回之資料欄值的資料欄索引。
<max_name_length>
傳回之資料欄名稱的長度上限。通常,最大長度為名稱緩衝區的長度。因為傳回的名稱為空值終止,所以長度上限應等於資料欄名稱的長度上限。
<source_or_target>
下列其中一項,指示是否壓縮來源或目標記錄。
EXIT_FN_SOURCE_VAL
EXIT_FN_TARGET_VAL
輸出
<column_name>
要傳回之資料欄值的資料欄名稱。
actual_name_length
傳回名稱的實際長度。
value_truncated
指示值是否被截斷的旗標 (0 或 1)。如果資料欄名稱加上空值終止字元的長度超過緩衝區長度上限,就會發生截斷。
<native_data_type>
資料欄的原生 (資料庫) 資料類型。根據程序傳回 native_data_type 或 dd_data_type,如下所示:
-
如果 Extract 正在對來源資料欄進行回呼要求,則會傳回
native_data_type。如果 Extract 要求對應的目標資料欄,則會傳回gg_data_type(假設系統上有目標定義檔案)。 -
如果 Extract 資料汲取正在對來源資料欄進行回呼要求,且有本機資料庫,則會傳回
native_data_type。如果沒有資料庫,則會傳回gg_data_type(假設系統上有來源定義檔案)。如果泵浦要求目標資料欄,則會傳回gg_data_type(假設系統上有目標定義檔案)。 -
如果 Replicat 正在提出來源資料欄的回呼要求,則會傳回
gg_data_type(假設系統上有來源定義檔案)。如果 Replicat 要求來源資料欄,且參數檔中目前使用ASSUMETARGETDEFS,則會傳回native_data_type。如果 Replicat 要求目標資料欄,則會傳回native_data_type。
<gg_data_type>
資料欄的 Oracle GoldenGate 資料類型。
<gg_sub_data_type>
資料欄的 Oracle GoldenGate 子類型。
<is_nullable>
指示資料欄是否允許空值的旗標 (TRUE 或 FALSE)。
<is_part_of_key>
指示資料欄是否為 Oracle GoldenGate 所使用之索引鍵的一部分的旗標 (TRUE 或 FALSE)。
<key_column_index>
指示索引中資料欄的順序。例如,下表有兩個索引鍵資料欄,其順序與它們在主索引鍵中宣告的順序不同。
CREATE TABLE ABC
(
cust_code VARCHAR2(4),
name VARCHAR2(30),
city VARCHAR2(20),
state CHAR(2),
PRIMARY KEY (city, cust_code)
USING INDEX
);
為邏輯資料欄順序中的每個資料欄執行回呼函數會傳回下列項目:
-
cust_code傳回1 -
name傳回-1 -
city傳回0 -
state傳回-1
如果資料欄是索引鍵的一部分,則傳回的值就是索引鍵內資料欄的順序。
如果資料欄不是索引鍵的一部分,則會傳回 -1 值。
<length>
傳回資料欄的長度。
<precision>
如果是數值資料類型,則會傳回資料欄的精確度。
<scale>
如果是數值資料類型,則會傳回小數位數。
傳回值
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