GET_DDL_RECORD_PROPERTIES

Durée de validité

Extraction et réplication, pour les bases de données pour lesquelles la réplication DDL est prise en charge

Description

Utilisez la fonction GET_DDL_RECORD_PROPERTIES pour renvoyer une opération DDL, y compris des informations sur l'objet sur lequel DDL a été exécuté, ainsi que le texte de l'instruction DDL elle-même. Le traitement d'extraction peut uniquement obtenir la présentation de la table source. Le processus Replicat peut obtenir des présentations source ou cible.

Si la session de caractères de l'exit utilisateur est définie avec SET_SESSION_CHARSET sur une valeur autre que le jeu de caractères par défaut du système d'exploitation, tel que défini dans ULIB_CS_DEFAULT dans le fichier ucharset.h, les données de caractères échangées entre l'exit utilisateur et le processus sont interprétées dans le jeu de caractères de session. Cela inclut le type DDL, le type d'objet, le nom d'objet en deux ou trois parties, le nom du propriétaire et le texte DDL lui-même.

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

Tampon

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;

Entrée

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

Pointeur vers un tampon pour chacun de ces éléments afin d'accepter les valeurs de colonne renvoyées. Ces points sont les suivants :

<ddl_type_length>

Contient la longueur du type d'opération DDL, par exemple CREATE ou ALTER.

<object_type_length>

Contient la longueur du type d'objet de base de données affecté par l'opération DDL, par exemple TABLE ou INDEX.

<object_length>

Contient la longueur du nom de l'objet.

<object_length>

Contient la longueur du propriétaire de l'objet (schéma ou base de données).

<ddl_text_length>

Contient la longueur du texte réel de l'instruction DDL.

<ddl_type_max_length>

Longueur maximale du type d'opération DDL renvoyé par *ddl_type. Le type DDL est toute commande DDL valide pour la base de données, telle que ALTER.

<object_type_max_length>

Longueur maximale du type d'objet renvoyé par *object_type. Le type d'objet est tout objet valide pour la base de données, tel que TABLE, INDEX et TRIGGER.

<object_max_length>

Longueur maximale du nom de l'objet renvoyé par *object_name.

<owner_max_length>

Longueur maximale du nom du propriétaire renvoyé par *owner_name.

<ddl_text_max_length>

Longueur maximale du texte de l'instruction DDL renvoyée par *ddl_text.

<source_or_target>

L'un des éléments suivants indique si le type d'opération doit être renvoyé pour l'enregistrement de données source ou cible.

EXIT_FN_SOURCE_VAL
EXIT_FN_TARGET_VAL

Sortie

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

Tous ces champs renvoient la longueur réelle de la valeur demandée. (Voir l'entrée pour les descriptions.)

<ddl_text_truncated>

Indicateur (0 ou 1) indiquant si le texte DDL a été tronqué ou non. La troncature se produit si la longueur du texte DDL plus la terminaison NULL dépasse la longueur maximale du tampon.

Valeurs retournées

EXIT_FN_RET_OK
EXIT_FN_RET_NOT_SUPPORTED
EXIT_FN_RET_INVALID_CONTEXT
EXIT_FN_RET_INCOMPLETE_DDL_REC