2017-02-21 57 views
2

Я работаю с Oracle 12c и нужно найти все ссылки, где конкретная таблица или представление используется в хранимых процедур/функций и пакеты.Как определить все хранимые процедуры Отсносящийся конкретную таблицу в Oracle

Я нашел этот answer about MS SQL Server, но это не связанные с Oracle, кроме sp_help и sp_depends иногда возвращают неточные результаты.

Я знаю, что искать в колонке text таблицы all_source, например, этот код (поиск только стандартные пользовательские имена пакетов, а не система упаковки):

SELECT type, name, line, text 
    FROM all_source 
    WHERE type = 'PACKAGE BODY' 
    AND name like 'P%' 
    AND UPPER(text) like '%' || p_table_or_view_name || '%' 
    ORDER BY name, line; 

, но я ищу, если есть более элегантное и/или стандартное решение в Oracle.

Я также проверяю, может ли это answer помочь мне в любом случае.

Буду признателен за любую помощь.

ответ

2

Используйте ALL_DEPENDENCIES словарную таблицу:

SELECT * 
FROM ALL_DEPENDENCIES 
WHERE referenced_name = 'YOUR_TABLE_NAME' 
AND owner   = 'YOUR_USER'; 
+0

Кроме того, было бы хорошо, если вы используете администратора логин пользователя, который. Обычный пользователь может не иметь доступа к списку зависимостей. – Maverick