GET_COL_METADATA_FROM_NAME

有效對象

擷取與 Replicat

說明

使用 GET_COL_METADATA_FROM_NAME 函數指定想要的資料欄名稱,以擷取資料欄描述資料。如果使用者結束程式的字元階段作業將 SET_SESSION_CHARSET 設為作業系統預設字元集以外的值 (如 ucharset.h 檔案中的 ULIB_CS_DEFAULT 所定義),則使用者結束程式與程序之間交換的字元資料會解譯為階段作業字元集。

如果資料庫區分大小寫,則必須以與主控資料庫中定義的相同字母大小寫來指定物件名稱;否則,大小寫並不重要。

語法

#include "usrdecs.h"
short result_code;
col_metadata_def column_meta_rec;
ERCALLBACK (GET_COL_METADATA_FROM_NAME, &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_name>

要傳回之資料欄值的資料欄名稱。

<max_name_length>

傳回之資料欄名稱的長度上限。通常,最大長度為名稱緩衝區的長度。因為傳回的名稱為空值終止,所以長度上限應等於資料欄名稱的長度上限。

<source_or_target>

下列其中一項,指示是否壓縮來源或目標記錄。

EXIT_FN_SOURCE_VAL
EXIT_FN_TARGET_VAL

輸出

<column_index>

要傳回之資料欄值的資料欄索引。

actual_name_length

傳回名稱的實際長度。

<source_or_target>

下列其中一項,指示是否壓縮來源或目標記錄。

EXIT_FN_SOURCE_VAL
EXIT_FN_TARGET_VAL

value_truncated

指示值是否被截斷的旗標 (0 或 1)。如果資料欄名稱加上空值終止字元的長度超過緩衝區長度上限,就會發生截斷。

<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 tcustmer
(
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