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