mardi 4 février 2014

Comment déterminer à qui appartient un package oracle à l'exécution

La solution que l'on rencontre le plus souvent pour répondre à cette question, consiste à récupérer dans le context quel est le schéma actuel via la fonction sys_context:

sys_context('userenv', 'current_schema')

Cependant, cette méthode ne fonctionnera pas si l'on se trouve dans une procédure d'un package marquée comme devant s'exécuter en utilisant le schéma actuel (c'est à dire de l'appelant) et non le schéma dans lequel se trouve le package(utilisation de "authid current_user" plus d'info ici)

En effectuant, quelques recherches, j'ai trouvé une autre solution (voir ici) qui consiste à analyser la call stack. La première entrée de cette dernière contiendra le nom du schéma et le nom du package qui est appelé(owner.package), il suffira donc d'extraire la première partie (celle juste avant le point) pour connaitre le propriétaire du package.

Une implémentation est proposée sur le site ou j'ai trouvé la réponse à ma question : http://cbohl.blogspot.be/2011/01/determine-owner-of-package.html

Aucun commentaire:

Enregistrer un commentaire