Zapytanie, aby przeszukać wszystkie pakiety dla tabeli i / lub kolumny

Czy istnieje zapytanie, które mogę uruchomić, aby przeszukać wszystkie pakiety, aby sprawdzić, czy konkretna tabela i / lub kolumna jest używana w pakiecie? Istnieje zbyt wiele pakietów, aby otworzyć każdy z nich i znaleźć wartości, których szukam.

 31
Author: Mark, 2011-01-31

4 answers

Możesz to zrobić:

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

Alternatywnie, programista SQL ma wbudowany raport, aby to zrobić pod:

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

Dokumenty 11g dla USER_SOURCE są tutaj

 58
Author: Tony Andrews,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-30 16:19:54

Możesz użyć widoków *_DEPENDENCIES, na przykład:

SELECT owner, NAME
  FROM dba_dependencies
 WHERE referenced_owner = :table_owner
   AND referenced_name = :table_name
   AND TYPE IN ('PACKAGE', 'PACKAGE BODY')
 8
Author: Vincent Malgrat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-31 16:07:24

Czasami kolumna, której szukasz, może być częścią nazwy wielu innych rzeczy, które cię nie interesują.

Na przykład ostatnio Szukałem kolumny o nazwie "BQR" , która również stanowi część wielu innych kolumn ,takich jak" BQR_OWNER"," PROP_BQR", itp.

Chciałbym więc mieć pole wyboru, które procesory tekstu muszą wskazywać "tylko całe słowa".

Niestety LIKE nie ma takiej funkcjonalności, ale REGEXP_LIKE może pomóc.

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

To jest Wyrażenie regularne, aby znaleźć tę kolumnę i wykluczyć inne kolumny z "BQR" jako część nazwy:

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

Wyrażenie regularne pasuje do white-space (\s), lub ( / ) period (.), lub ( | ) przecinek (,), lub ( / ) start-of-line ( ^ ), a następnie "bqr", a następnie white-space, comma lub end-of-line ($).

 0
Author: S Meyer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-22 18:13:03

Nawiasem mówiąc, jeśli chcesz dodać inne znaki, takie jak " ("lub")", ponieważ kolumna może być używana jako " UPPER (bqr)", to opcje te można dodać do listy znaków przed i po.

(\s|\(|\.|,|^)bqr(\s|,|\)|$)
 0
Author: S Meyer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-22 18:24:57