2017-02-21 77 views
2

我与Oracle 12c的工作,需要找到被在使用的特定表或视图存储过程/函数所有引用。如何识别闯民宅特定表的所有存储过程在Oracle中

我已经找到了这个answer about MS SQL Server,但它不相关甲骨文,除了sp_helpsp_depends有时返回不准确的结果。

我知道在表all_sourcetext栏进行搜索,例如,这个代码(仅搜索标准的用户定义的包名,不系统包):

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

相关问题