是否可以在Oracle中跨多个模式搜索所有编程对象(函数、存储过程、触发器等)?
有许多表在我的代码中似乎没有使用,但我不想在没有事先检查的情况下删除它们来破坏任何东西。
发布于 2011-04-21 03:21:47
可以搜索对象代码--通常使用DBMS_METADATA包为对象生成动态链接库,然后搜索CLOB。然而,这听起来并不是你真正想要做的。
如果您只是试图确定系统中的任何代码是否引用了一个表,那么您通常会希望使用DBA_DEPENDENCIES视图(或者根据您的权限和所查找的范围,使用ALL_DEPENDENCIES或USER_DEPENDENCIES )。就像这样
SELECT *
FROM dba_dependencies
WHERE referenced_owner = 'SCOTT'
AND referenced_name = 'EMP'
AND referenced_type = 'TABLE'将向您展示依赖于SCOTT模式中的EMP表的所有内容。
惟一需要搜索代码而不是查看DBA_DEPENDENCIES的情况是,当您有执行动态DBA_DEPENDENCIES的代码时,表名是硬编码的。但在实践中,这相对不太可能。
发布于 2011-04-21 03:18:46
您可以搜索DBA_SOURCE视图:
SELECT *
FROM dba_source
WHERE UPPER(text) LIKE '%YOUR_TABLE_NAME%';发布于 2016-05-06 01:36:54
要在Toad中执行此操作,请选择:
搜索=>对象搜索
https://stackoverflow.com/questions/5735463
复制相似问题