GET_DDL_RECORD_PROPERTIES

Válido Para

Extract e Replicat, para bancos de dados para os quais a replicação DDL é suportada

Descrição

Use a função GET_DDL_RECORD_PROPERTIES para retornar uma operação DDL, incluindo informações sobre o objeto no qual a DDL foi executada e também o texto da própria instrução DDL. O processo Extract só pode obter o layout da tabela de origem. O processo Replicat pode obter layouts de origem ou de destino.

Se a sessão de caracteres da saída do usuário for definida com SET_SESSION_CHARSET para um valor diferente do conjunto de caracteres padrão do sistema operacional, conforme definido em ULIB_CS_DEFAULT no arquivo ucharset.h, os dados de caracteres que são trocados entre a saída do usuário e o processo serão interpretados no conjunto de caracteres da sessão. Isso inclui o tipo DDL, o tipo de objeto, o nome do objeto de duas ou três partes, o nome do proprietário e o próprio texto DDL.

#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>

Um ponteiro para um buffer para cada um desses itens aceitar os valores da coluna retornada. Estes itens são os seguintes:

<ddl_type_length>

Contém o tamanho do tipo de operação DDL, por exemplo, um CREATE ou ALTER.

<object_type_length>

Contém o tamanho do tipo de objeto de banco de dados que é afetado pela operação DDL, por exemplo TABLE ou INDEX.

<object_length>

Contém o tamanho do nome do objeto.

<object_length>

Contém o tamanho do proprietário do objeto (esquema ou banco de dados).

<ddl_text_length>

Contém o tamanho do texto da instrução DDL real.

<ddl_type_max_length>

O tamanho máximo do tipo de operação DDL que é retornado por *ddl_type. O tipo DDL é qualquer comando DDL válido para o banco de dados, como ALTER.

<object_type_max_length>

O tamanho máximo do tipo de objeto que é retornado por *object_type. O tipo de objeto é qualquer objeto válido para o banco de dados, como TABLE, INDEX e TRIGGER.

<object_max_length>

O tamanho máximo do nome do objeto que é retornado por *object_name.

<owner_max_length>

O tamanho máximo do nome do proprietário que é retornado por *owner_name.

<ddl_text_max_length>

O tamanho máximo do texto da instrução DDL retornado por *ddl_text.

<source_or_target>

Uma das opções a seguir indica se o tipo de operação deve ser retornado para o registro de dados de origem ou de destino.

EXIT_FN_SOURCE_VAL
EXIT_FN_TARGET_VAL

Saída

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

Todos esses campos retornam o tamanho real do valor solicitado. (Consulte a entrada para obter descrições.)

<ddl_text_truncated>

Um flag (0 ou 1) para indicar se o texto DDL foi truncado ou não. O truncamento ocorre se o tamanho do texto DDL mais o terminador nulo exceder o tamanho máximo do buffer.

Valores de Retorno

EXIT_FN_RET_OK
EXIT_FN_RET_NOT_SUPPORTED
EXIT_FN_RET_INVALID_CONTEXT
EXIT_FN_RET_INCOMPLETE_DDL_REC