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,如下所示:

<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
);

為邏輯資料欄順序中的每個資料欄執行回呼函數會傳回下列項目:

如果資料欄是索引鍵的一部分,則傳回的值就是索引鍵內資料欄的順序。

如果資料欄不是索引鍵的一部分,則會傳回 -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