GET_COL_METADATA_FROM_INDEX

有效对象

提取和复制

说明

使用 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>

返回的列名的最大长度。通常,最大长度是名称缓冲区的长度。由于返回的名称以 Null 结尾,因此最大长度应等于列名称的最大长度。

<source_or_target>

以下项之一,用于指示正在压缩源记录还是目标记录。

EXIT_FN_SOURCE_VAL
EXIT_FN_TARGET_VAL

输出

<column_name>

要返回的列值的列名。

actual_name_length

返回名称的实际长度。

value_truncated

指示值是否被截断的标志(0 或 1)。如果列名的长度加上 NULL 终结符超过了最大缓冲区长度,则会发生截断。

<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