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 :
-
Recréer des instructions
DML -
Effectuer des transformations
-
Extraire des colonnes spécifiques d'un enregistrement
-
Ecrire des informations dans un fichier de rapport
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.