web-dev-qa-db-fra.com

Requête pour rechercher dans tous les paquets la table et/ou la colonne

Existe-t-il une requête que je peux exécuter pour rechercher dans tous les packages afin de déterminer si une table et/ou une colonne particulière est utilisée dans le package? Il y a trop de paquets pour ouvrir chacun et faire une recherche sur la valeur que je cherche.

32
Matt M

Tu peux le faire:

select *
from user_source
where upper(text) like upper('%SOMETEXT%');

Sinon, SQL Developer dispose d'un rapport intégré pour le faire sous:

View > Reports > Data Dictionary Reports > PLSQL > Search Source Code

Les documents 11G pour USER_SOURCE sont ici

60
Tony Andrews

vous pouvez utiliser les vues *_DEPENDENCIES, par exemple:

SELECT owner, NAME
  FROM dba_dependencies
 WHERE referenced_owner = :table_owner
   AND referenced_name = :table_name
   AND TYPE IN ('PACKAGE', 'PACKAGE BODY')
8
Vincent Malgrat

Parfois, la colonne que vous recherchez peut faire partie du nom de nombreuses autres choses qui ne vous intéressent pas.

Par exemple, je recherchais récemment une colonne appelée "BQR", qui fait également partie de nombreuses autres colonnes telles que "BQR_OWNER", "PROP_BQR", etc.

Je voudrais donc que la case à cocher indique que le traitement de texte doit indiquer "Mots entiers uniquement".

Malheureusement, LIKE n’a pas cette fonctionnalité, mais REGEXP_LIKE peut vous aider.

SELECT *
  FROM user_source
 WHERE regexp_like(text, '(\s|\.|,|^)bqr(\s|,|$)');

Il s'agit de l'expression régulière permettant de rechercher cette colonne et d'exclure les autres colonnes contenant "BQR" dans le nom:

(\s|\.|,|^)bqr(\s|,|$)

L'expression régulière correspond à un espace (\ s), ou (|) point (.), Ou (|) virgule (,) ou (|) début de ligne (^), suivi de "bqr", par un espace, une virgule ou une fin de ligne ($).

0
S Meyer

En passant, si vous devez ajouter d'autres caractères tels que "(" ou ")" car la colonne peut être utilisée comme "UPPER (bqr)", vous pouvez ajouter ces options aux listes de caractères avant et après.

(\s|\(|\.|,|^)bqr(\s|,|\)|$)
0
S Meyer