2016-09-30 1 views
0

J'ai besoin d'une requête pour trouver toutes les procédures stockées dans ma BD PLSQL qui utilisent la colonne "ID_SUB".Comment puis-je trouver toutes les procédures stockées qui utilisent une colonne dans PL SQL?

Juste au cas où, y at-il des options de Toad pour faire ceci?

+2

double possible de [Comment trouver le nom de la procédure stockée en utilisant le nom de colonne dans Oracle 11g] (http://stackoverflow.com/questions/5432948/how-to-find-name-of-the-stored-procedure-using-column-name-in-oracle-11g) –

Répondre

0

Essayez cette requête:

select name, 
     line, 
     text 
    from ALL_SOURCE 
    where text like '%ID_SUB%' 
+0

Fonctionne !! Je vous remercie!! ;) – pacio14

0

Tout le code de procédure sera dans la table sys.all_source si vous avez la permission de choisir parmi elle. Cela devrait vous approcher un peu plus:

select distinct owner, name 
from sys.all_source 
where type = 'PROCEDURE' 
and text like '%ID_SUB%'; 
0

Il n'y a pas moyen sûr, mais vous pouvez rechercher l'utilisateur/all/dba_source en utilisant regexp_like pour vérifier des mots entiers, et de référence croisée avec l'utilisateur/all/dba_dependencies à affiner la liste des paquets à 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 à 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 pourriez faire juste utiliser select distinct s.owner, s.name, s.type ... pour obtenir une liste d'objets pour enquêter.

(répétition de ma réponse à How to find name of the stored procedure using Column name in Oracle 11g que je pris conscience après la publication était de 5 ans. L'espoir qui est OK avec l'étiquette SO.)