查询以搜索表和/或列的所有包

Mat*_*t M 36 oracle

是否有查询我可以运行以搜索所有包以查看包中是否使用了特定的表和/或列?有太多的软件包可以打开每个软件包并查找我正在寻找的价值.

Ton*_*ews 62

你可以这样做:

select *
from user_source
where upper(text) like upper('%SOMETEXT%');
Run Code Online (Sandbox Code Playgroud)

或者,SQL Developer有一个内置报告,可以在下面执行此操作:

View > Reports > Data Dictionary Reports > PLSQL > Search Source Code
Run Code Online (Sandbox Code Playgroud)

USER_SOURCE的11G文档就在这里

  • 我每天都会访问此页面 3 次来执行此查询,但它迫切需要以下改进,以避免输入区分大小写的条件: select * from user_source where upper(text) like upper('%search string%' ) (2认同)

Vin*_*rat 8

您可以使用视图*_DEPENDENCIES,例如:

SELECT owner, NAME
  FROM dba_dependencies
 WHERE referenced_owner = :table_owner
   AND referenced_name = :table_name
   AND TYPE IN ('PACKAGE', 'PACKAGE BODY')
Run Code Online (Sandbox Code Playgroud)

  • 显然,这只适用于所有包都使用静态SQL的情况.如果您的软件包已知包含动态SQL,那么Tony Andrews的解决方案就更好了. (3认同)