Obtenez le nom de la procédure d'appel ou de la fonction Oracle PL/SQL
Personne ne sait s'il est possible pour un PL/SQL procédure (une erreur d'enregistrement dans ce cas) pour obtenir le nom de la fonction/procédure qui l'a appelé?
Évidemment, je pourrais passer le nom en tant que paramètre, mais ce serait sympa de faire un appel système ou quelque chose pour obtenir l'info - il pourrait simplement retourner la valeur null ou quelque chose si elle n'était pas appelée à partir d'une fonction/procédure.
Si il n'y a pas de méthode pour cela c'est très bien - juste curieux de savoir si c'est possible (recherche rien de rendement).
Merci à vous deux pour vos suggestions. J'ai regardé dans le who_called_me proc dans le OWA_Util paquet, et le format_call_stack fonction. Je vais certainement utiliser le who_called_me proc. Quelques recherches sur qui a montré qu'il est possible (mais pas infaillible) façons d'obtenir la réelle fonction de/proc nom. (voir ici: lien/httpasktomoraclecomtkytewhocalledme.html). Je peut très bien ajouter la pile d'appel, selon le "deep" cette application devient! Cordialement, Paul
PS - si quelqu'un pouvait me dire comment faire pour formater mon commentaire précédent, je lui en serais reconnaissant, essayé quelques fois avec référence à la " démarque guide, mais ne peut pas obtenir des retours à la ligne (pour montrer!
PS - si quelqu'un pouvait me dire comment faire pour formater mon commentaire précédent, je lui en serais reconnaissant, essayé quelques fois avec référence à la " démarque guide, mais ne peut pas obtenir des retours à la ligne (pour montrer!
OriginalL'auteur Paul Yeoman | 2011-09-01
Vous devez vous connecter pour publier un commentaire.
Il y a un paquet appelé
OWA_UTIL
(ce qui n'est pas installé par défaut dans les versions plus anciennes de la base de données). C'est une méthodeWHO_CALLED_ME()
qui renvoie le PROPRIÉTAIRE, OBJECT_NAME, LINE_NO et CALLER_TYPE. Notez que si l'appelant est un emballés procédure, il retournera le COLIS n'est pas le nom le nom de la procédure. Dans ce cas, il est impossible d'obtenir le nom de la procédure; c'est parce que le nom de la procédure peut être surchargé, donc c'est pas forcément très utile.En savoir plus.
Depuis 10gR2 il y a aussi le
$$PLSQL_UNIT
fonction spéciale; cela permettra également de retourner le NOM de l'OBJET (c'est à dire package pas emballé procédure).OriginalL'auteur APC
J'ai trouvé ce forum: http://www.orafaq.com/forum/t/60583/0/. Il est peut-être ce que vous cherchez.
Fondamentalement, vous pouvez utiliser l'Oracle fourni
dbms_utility.format_call_stack
:OriginalL'auteur CristiC