GET_DDL_RECORD_PROPERTIES

有效对象

提取和复制,适用于支持 DDL 复制的数据库

说明

使用 GET_DDL_RECORD_PROPERTIES 函数返回 DDL 操作,包括有关对其执行 DDL 的对象的信息,以及 DDL 语句本身的文本。“提取”处理只能获取来源表布局。Replicat 进程可以获取源或目标布局。

如果使用 SET_SESSION_CHARSET 将用户出口的字符会话设置为 ucharset.h 文件的 ULIB_CS_DEFAULT 中定义的操作系统默认字符集以外的值,则将在会话字符集中解释用户出口和进程之间交换的字符数据。这包括 DDL 类型、对象类型、两部分或三部分对象名称、所有者名称和 DDL 文本本身。

#include "usrdecs.h"
short result_code;
ddl_record_def ddl_rec;
ERCALLBACK (GET_DDL_RECORD_PROPERTIES, &ddl_rec, &result_code);

缓冲区

typedef struct
{
char *ddl_type;
long ddl_type_max_length; /* Maximum Description length PASSED IN BY USER */
long ddl_type_length; /* Actual length */

char *object_type;
long object_type_max_length; /* Maximum Description length PASSED IN BY USER */
long object_type_length; /* Actual length */

char *object_name; /* Fully qualified name of the object
  (3-part for CDB, 2-part for non-CDB) */
long object_max_length; /* Maximum Description length PASSED IN BY USER */
long object_length; /* Actual length */

char *owner_name;
long owner_max_length; /* Maximum Description length PASSED IN BY USER */
long owner_length; /* Actual length */

char *ddl_text;
long ddl_text_max_length; /* Maximum Description length PASSED IN BY USER */
long ddl_text_length; /* Actual length */

short ddl_text_truncated; /* Was value truncated? */
short source_or_target; /* Source or target value? */
} ddl_record_def;

输入

<ddl_type_length> <object_type_length> <object_length> <owner_length> <ddl_text_length>

指向每个这些项的一个缓冲区的指针,以接受返回的列值。这些项目如下:

<ddl_type_length>

包含 DDL 操作类型的长度,例如 CREATE 或 ALTER.

<object_type_length>

包含受 DDL 操作影响的数据库对象类型的长度,例如 TABLE 或 INDEX。

<object_length>

包含对象名称的长度。

<object_length>

包含对象(方案或数据库)所有者的长度。

<ddl_text_length>

包含实际 DDL 语句文本的长度。

<ddl_type_max_length>

*ddl_type 返回的 DDL 操作类型的最大长度。DDL 类型是任何对数据库有效的 DDL 命令,例如 ALTER。

<object_type_max_length>

*object_type 返回的对象类型的最大长度。对象类型是对数据库有效的任何对象,例如 TABLE、INDEX 和 TRIGGER。

<object_max_length>

*object_name 返回的对象名称的最大长度。

<owner_max_length>

*owner_name 返回的所有者名称的最大长度。

<ddl_text_max_length>

*ddl_text 返回的 DDL 语句文本的最大长度。

<source_or_target>

以下项之一,指示是返回源数据记录还是目标数据记录的操作类型。

EXIT_FN_SOURCE_VAL
EXIT_FN_TARGET_VAL

输出

<ddl_type_length> <object_type_length> <object_length> <owner_length> <ddl_text_length>

所有这些字段都返回所请求值的实际长度。(有关说明,请参见输入。)

<ddl_text_truncated>

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

返回值

EXIT_FN_RET_OK
EXIT_FN_RET_NOT_SUPPORTED
EXIT_FN_RET_INVALID_CONTEXT
EXIT_FN_RET_INCOMPLETE_DDL_REC