GET_DDL_RECORD_PROPERTIES

有效對象

擷取和 Replicat,適用於支援 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