GET_DDL_RECORD_PROPERTIES
Valido per
Extract e Replicat, per i database per i quali è supportata la replica DDL
Descrizione
Utilizzare la funzione GET_DDL_RECORD_PROPERTIES per restituire un'operazione DDL, incluse le informazioni sull'oggetto su cui è stato eseguito DDL e anche il testo dell'istruzione DDL stessa. Il processo Extract può ottenere solo il layout della tabella di origine. Il processo Replicat può ottenere layout di origine o di destinazione.
Se la sessione dei caratteri dell'uscita utente è impostata con SET_SESSION_CHARSET su un valore diverso dal set di caratteri predefinito del sistema operativo, come definito in ULIB_CS_DEFAULT nel file ucharset.h, i dati dei caratteri scambiati tra l'uscita utente e il processo vengono interpretati nel set di caratteri della sessione. Ciò include il tipo DDL, il tipo di oggetto, il nome dell'oggetto in due o tre parti, il nome del proprietario e il testo DDL stesso.
#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;
Input
<ddl_type_length> <object_type_length> <object_length> <owner_length> <ddl_text_length>
Un puntatore a un buffer per ciascuno di questi elementi per accettare i valori di colonna restituiti. Gli elementi sono i seguenti:
<ddl_type_length>
Contiene la lunghezza del tipo di operazione DDL, ad esempio CREATE o ALTER.
<object_type_length>
Contiene la lunghezza del tipo di oggetto di database interessato dall'operazione DDL, ad esempio TABLE o INDEX.
<object_length>
Contiene la lunghezza del nome dell'oggetto.
<object_length>
Contiene la lunghezza del proprietario dell'oggetto (schema o database).
<ddl_text_length>
Contiene la lunghezza del testo effettivo dell'istruzione DDL.
<ddl_type_max_length>
La lunghezza massima del tipo di operazione DDL restituita da *ddl_type. Il tipo DDL è qualsiasi comando DDL valido per il database, ad esempio ALTER.
<object_type_max_length>
La lunghezza massima del tipo di oggetto restituita da *object_type. Il tipo di oggetto è qualsiasi oggetto valido per il database, ad esempio TABLE, INDEX e TRIGGER.
<object_max_length>
La lunghezza massima del nome dell'oggetto restituita da *object_name.
<owner_max_length>
La lunghezza massima del nome del proprietario restituita da *owner_name.
<ddl_text_max_length>
La lunghezza massima del testo dell'istruzione DDL restituita da *ddl_text.
<source_or_target>
Una delle seguenti opzioni indica se restituire il tipo di operazione per il record di dati di origine o di destinazione.
EXIT_FN_SOURCE_VAL
EXIT_FN_TARGET_VAL
Output
<ddl_type_length> <object_type_length> <object_length> <owner_length> <ddl_text_length>
Tutti questi campi restituiscono la lunghezza effettiva del valore richiesto. (Vedere l'input per le descrizioni.)
<ddl_text_truncated>
Flag (0 o 1) che indica se il testo DDL è stato troncato o meno. La troncatura si verifica se la lunghezza del testo DDL più il terminatore nullo supera la lunghezza massima del buffer.
Valori restituiti
EXIT_FN_RET_OK
EXIT_FN_RET_NOT_SUPPORTED
EXIT_FN_RET_INVALID_CONTEXT
EXIT_FN_RET_INCOMPLETE_DDL_REC