ORA-06508: PL / SQL: impossible de trouver l'unité de programme appelée
Je suis en utilisant oracle 10g et crapaud 11.5. Je suis en train d'appeler une api à partir d'un bloc anonyme.
Si j'ai recompiler l'api après l'ajout de dbms_output.put_line
et puis essayez d'exécuter le bloc anonyme ,il indique une erreur comme
"ORA-06508: PL/SQL: could not find program unit being called".
Cependant, si j'arrive à la fin de la session en cours et d'ouvrir une nouvelle session , l'anonyme bloc à exécuter avec l'erreur.
À cause de ce problème, je suis fait pour la reconnexion de la session à chaque fois que je fais un changement d'API.
Quelqu'un peut-il aider si ce problème peut être résolu en effectuant toutes les configurations en crapaud ou de niveau base de données.
source d'informationauteur battech
Vous devez vous connecter pour publier un commentaire.
Je soupçonne que vous êtes seulement les rapports de la dernière erreur dans une pile comme ceci:
Si oui, c'est parce que votre colis est dynamique:
Lorsque vous recompiler l'état est perdu:
Vous ne pouvez pas éviter cette situation, si votre colis a l'état. Je pense que c'est assez rare d'avoir besoin d'un paquet à être dynamique, donc vous devriez relire ce que vous avez déclaré dans le paquet, mais en dehors d'une fonction ou de la procédure, à voir si c'est vraiment nécessaire à ce niveau. Puisque vous êtes sur 10g bien, qui inclut des constantes, et pas seulement les variables et les curseurs.
Mais le dernier paragraphe de la cité de la documentation signifie que la prochaine fois que vous exécuterez le paquet dans la même session, vous n'aurez pas d'erreur et il fonctionnera comme normale (jusqu'à ce que vous recompiler).
semble que l'ouverture d'une nouvelle session est la clé.
voir cette réponse.
et voici un génial explication sur cette erreur
Basé sur les réponses précédentes. J'ai résolu mon problème en supprimant la variable globale au niveau du colis à la procédure, car il n'y a pas eu d'impact dans mon cas.
Script Original était
Réécrit la même sans la variable globale
V_ERROR_NAME
et a déménagé à la procédure en vertu de paquet niveau queCode Modifié