GET_COL_METADATA_FROM_NAME

有效对象

提取和复制

说明

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

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

<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)。如果列名的长度加上 NULL 终止符超过了最大缓冲区长度,则会发生截断。

<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