Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment trouver le nom de la procédure stockée à l'aide du nom de la colonne dans Oracle 11g

Il n'y a pas de moyen garanti, mais vous pouvez rechercher user/all/dba_source en utilisant regexp_like pour vérifier les mots entiers, et croisez-les avec user/all/dba_dependencies pour affiner la liste des packages à vérifier.

select s.name, s.type, s.line, s.text
from   user_source s
where  ltrim(s.text,chr(9)||' ') not like '--%'
and    regexp_like(lower(s.text),'\Wyour_column_name_here\W')
and    (s.name, s.type) in
       ( select d.name, d.type
         from   user_dependencies d
         where  d.referenced_owner = user
         and    d.referenced_name = 'YOUR_TABLE_NAME_HERE' );

ou s'il pourrait y avoir des références à celui-ci à partir d'autres schémas,

select s.owner, s.name, s.type, s.line, s.text
from   all_source s
where  ltrim(s.text,chr(9)||' ') not like '--%'
and    regexp_like(lower(s.text),'\Wyour_column_name_here\W')
and    (s.owner, s.name, s.type) in
       ( select d.owner, d.name, d.type
         from   all_dependencies d
         where  d.referenced_owner = user
         and    d.referenced_name = 'YOUR_TABLE_NAME_HERE' );

Vous pouvez le faire simplement utiliser select distinct s.owner, s.name, s.type ... pour obtenir une liste d'objets à étudier.