GET_DDL_RECORD_PROPERTIES
Válido para
Extract y Replicat, para bases de datos para las que está soportada la replicación DDL
Descripción
Utilice la función GET_DDL_RECORD_PROPERTIES para devolver una operación DDL, incluida la información sobre el objeto en el que se ha realizado DDL y también el texto de la propia sentencia DDL. El proceso de extracción solo puede obtener el diseño de la tabla de origen. El proceso Replicat puede obtener diseños de origen o destino.
Si la sesión de caracteres de la salida de usuario se define con SET_SESSION_CHARSET en un valor distinto del juego de caracteres por defecto del sistema operativo, como se define en ULIB_CS_DEFAULT en el archivo ucharset.h, los datos de caracteres que se intercambian entre la salida de usuario y el proceso se interpretan en el juego de caracteres de la sesión. Esto incluye el tipo DDL, el tipo de objeto, el nombre del objeto de dos o tres partes, el nombre del propietario y el texto DDL en sí.
#include "usrdecs.h"
short result_code;
ddl_record_def ddl_rec;
ERCALLBACK (GET_DDL_RECORD_PROPERTIES, &ddl_rec, &result_code);
Buffer
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;
Entrada
<ddl_type_length> <object_type_length> <object_length> <owner_length> <ddl_text_length>
Un puntero a un buffer para cada uno de estos elementos para aceptar los valores de columna devueltos. Estos elementos son los siguientes:
<ddl_type_length>
Contiene la longitud del tipo de operación DDL, por ejemplo, CREATE o ALTER.
<object_type_length>
Contiene la longitud del tipo de objeto de base de datos que se ve afectado por la operación DDL, por ejemplo TABLE o INDEX.
<object_length>
Contiene la longitud del nombre del objeto.
<object_length>
Contiene la longitud del propietario del objeto (esquema o base de datos).
<ddl_text_length>
Contiene la longitud del texto de la sentencia DDL real.
<ddl_type_max_length>
Longitud máxima del tipo de operación DDL que devuelve *ddl_type. El tipo DDL es cualquier comando DDL que sea válido para la base de datos, como ALTER.
<object_type_max_length>
Longitud máxima del tipo de objeto que devuelve *object_type. El tipo de objeto es cualquier objeto válido para la base de datos, como TABLE, INDEX y TRIGGER.
<object_max_length>
Longitud máxima del nombre del objeto que devuelve *object_name.
<owner_max_length>
Longitud máxima del nombre del propietario que devuelve *owner_name.
<ddl_text_max_length>
Longitud máxima del texto de la sentencia DDL que devuelve *ddl_text.
<source_or_target>
Una de las siguientes indicaciones indica si se debe devolver el tipo de operación para el registro de datos de origen o de destino.
EXIT_FN_SOURCE_VAL
EXIT_FN_TARGET_VAL
Salida
<ddl_type_length> <object_type_length> <object_length> <owner_length> <ddl_text_length>
Todos estos campos devuelven la longitud real del valor solicitado. (Consulte la entrada para obtener descripciones).
<ddl_text_truncated>
Indicador (0 o 1) para indicar si el texto DDL se ha truncado o no. El truncamiento se produce si la longitud del texto DDL más el terminador nulo supera la longitud máxima del buffer.
Valores devueltos
EXIT_FN_RET_OK
EXIT_FN_RET_NOT_SUPPORTED
EXIT_FN_RET_INVALID_CONTEXT
EXIT_FN_RET_INCOMPLETE_DDL_REC