Utiliser ERCALLBACK

ERCALLBACK est la fonction de sortie utilisateur de base d'Oracle GoldenGate. Il est utilisé pour extraire le contexte d'enregistrement dans l'exit utilisateur. C'est comme un package qui contient plusieurs fonctions individuelles. Vous pouvez appeler ces fonctions et obtenir des valeurs de retour. Par exemple, des fonctions telles que GET_BEFORE_AFTER_IND ou GET_COLUMN_VALUE_FROM_NAME peuvent être appelées. Ces fonctions sont appelées function_code.

Syntaxe

ERCALLBACK (<function_code>, <buffer>, <result_code> );

<function_code>

Fonction à exécuter par la routine de rappel. La routine de rappel utilisateur se comporte différemment en fonction du code de fonction transmis à la routine de rappel. Bien que certaines fonctions puissent être utilisées à la fois pour le processus Extract et le processus Replicat, la validité de la fonction dans un processus ou dans l'autre dépend des paramètres d'entrée définis pour cette fonction au cours de la routine de rappel. Pour une description complète des codes de fonction disponibles, voir Codes de fonction.

<buffer>

Pointeur void vers un tampon contenant une structure prédéfinie associée au code de fonction spécifié.

<result_code>

Statut de la fonction exécutée par la routine de rappel. Le code de résultat renvoyé par la routine de rappel indique si la fonction de rappel a réussi ou non. Un code de résultat peut être l'une des valeurs du Table 4-4.

Tableau 4 Codes de résultat

Code Description
EXIT_FN_RET_BAD_COLUMN_DATA Des données non valides ont été détectées lors de la récupération ou de la définition des données de colonne.
EXIT_FN_RET_BAD_DATE_TIME Une colonne de type date, horodatage ou intervalle of contient une valeur de date ou d'heure non valide.
EXIT_FN_RET_BAD_NUMERIC_VALUE Un type numérique de colonne contient une valeur numérique non valide.
EXIT_FN_RET_COLUMN_NOT_FOUND La colonne est introuvable dans un enregistrement de mise à jour compressé (mise à jour par une base de données qui consigne uniquement les valeurs modifiées).
EXIT_FN_RET_ENV_NOT_FOUND La valeur d'environnement spécifiée est introuvable dans l'enregistrement.
EXIT_FN_RET_EXCEEDED_MAX_LENGTH Les métadonnées n'ont pas pu être extraites car le nom de la table ou de la colonne ne tenait pas dans le tampon alloué.
EXIT_FN_RET_FETCH_ERROR Impossible d'extraire l'enregistrement. Consultez le message d'erreur pour voir le motif.
EXIT_FN_RET_INCOMPLETE_DDL_REC Une erreur interne est survenue lors du traitement de l'enregistrement DDL. L'enregistrement est probablement incomplet.
EXIT_FN_RET_INVALID_CALLBACK_FNC_CD Un code de fonction de rappel non valide a été transmis à la routine de rappel.
EXIT_FN_RET_INVALID_COLUMN Une colonne inexistante a été référencée dans l'appel de fonction.
EXIT_FN_RET_INVALID_COLUMN_TYPE La routine tente de manipuler un type de données qui n'est pas pris en charge par Oracle GoldenGate à cette fin.
EXIT_FN_RET_INVALID_CONTEXT La fonction de rappel a été appelée à un moment incorrect.
EXIT_FN_RET_INVALID_PARAM Un paramètre non valide a été transmis à la fonction de rappel.
EXIT_FN_RET_NO_SRCDB_INSTANCE L'instance de base de données source est introuvable.
EXIT_FN_RET_NO_TGTDB_INSTANCE L'instance de base de données cible est introuvable.
EXIT_FN_RET_NOT_SUPPORTED Cette fonctionnalité n'est pas prise en charge pour ce traitement.
EXIT_FN_RET_OK La fonction de rappel a réussi.
EXIT_FN_RET_SESSION_CS_CNV_ERR Une erreur ULIB_ERR_INVALID_CHAR_FOUND a été renvoyée à la routine de conversion de jeu de caractères. Echec de la conversion.
EXIT_FN_RET_TABLE_NOT_FOUND Un nom de table non valide a été spécifié.
EXIT_FN_RET_TOKEN_NOT_FOUND Le jeton utilisateur spécifié est introuvable dans l'enregistrement.

Vous pouvez utiliser ERCALLBACK pour effectuer de nombreux appels de fonction différents. Par exemple, si vous souhaitez obtenir le nom d'une table, vous pouvez utiliser la commande suivante :

ERCALLBACK (GET_TABLE_NAME, &var, &result_code)

Ces fonctions sont utilisées dans le code c pour que l'exit utilisateur exécute l'un des appels de fonctions fournis dans la section Codes de fonction. Avec la combinaison des différents appels function_code, vous pouvez effectuer de nombreuses tâches à l'aide de ERCALLBACK, par exemple :

Par exemple, si vous avez besoin d'un message écrit dans le fichier de rapport chaque fois que le décalage dans la table de signal d'activité dépasse un certain seuil, vous pouvez utiliser la fonction CUSEREXIT. La fonction CUSEREXIT effectue alors de nombreux appels vers ERCALLBACK pour obtenir les données de colonne de décalage, effectuer des calculs et la comparaison. Si le décalage dépasse le seuil indiqué, écrivez un message dans le fichier de rapport.