GET_TABLE_METADATA

有效对象

提取和复制

说明

使用 GET_TABLE_METADATA 函数可检索有关与正在处理的记录关联的表的元数据。

语法

#include "usrdecs.h"
short result_code;
table_metadata_def tbl_meta_rec;
ERCALLBACK (GET_TABLE_METADATA, &tbl_meta_rec, &result_code);

缓冲区

typedef struct
{
char *table_name;
short value_truncated;
long max_name_length;
long actual_name_length;
short num_columns;
short num_key_columns;
short *key_columns;
short num_keys_returned;
BOOL using_pseudo_key;
short source_or_target;
} table_metadata_def;

输入

<table_name>

指向缓冲区的指针,用于接受 table_name 返回值

<key_columns>

指向 key_columns 索引数组的指针

<max_name_length>

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

<source_or_target>

以下项之一,指示是返回源表名称还是目标表名称。

EXIT_FN_SOURCE_VAL
EXIT_FN_TARGET_VAL

输出

<table_name>

与要处理的记录关联的表的名称。如果使用 SET_SESSION_CHARSET 将用户出口的字符会话设置为 ucharset.h 文件的 ULIB_CS_DEFAULT 中定义的操作系统默认字符集以外的值,则表名将在会话字符集中解释。

<value_truncated>

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

<actual_name_length>

返回的表名的字符串长度。实际长度不包括 NULL 终止符。

<num_columns>

表中的栏位数。

<num_key_columns>

Oracle GoldenGate 正在使用的密钥中的列数。

<key_columns>

关键字列的值。您必须知道预期的键数乘以列的长度,然后分配适当的缓冲区量。

<num_keys_returned>

请求的关键字列数。

using_pseudo_key

指示是否将 KEYCOLS 指定的列用作键的标志。返回 TRUE 或 FALSE。

返回值

EXIT_FN_RET_INVALID_PARAM
EXIT_FN_RET_INVALID_CONTEXT
EXIT_FN_RET_EXCEEDED_MAX_LENGTH
EXIT_FN_RET_OK