用于在Oracle中搜索对象(包括存储过程)的SQL

Gle*_*ark 25 sql oracle search full-text-search

我需要编写一些sql来允许我查询Oracle数据库中的所有对象.不幸的是,我们被允许使用的工具没有内置.基本上,我需要搜索所有表,过程,触发器,视图,一切.

我知道如何搜索对象名称.但我需要搜索对象的内容.即SELECT*FROM DBA_OBJECTS WHERE object_name ='%search string%';

谢谢,格伦

Chr*_*lls 31

我不确定我是否完全理解这个问题,但是如果你想在数据库中搜索特定搜索字符串的对象,请尝试:

SELECT owner, name, type, line, text 
FROM dba_source
WHERE instr(UPPER(text), UPPER(:srch_str)) > 0;
Run Code Online (Sandbox Code Playgroud)

如果您需要更多信息,可以从那里查找对象/行号.


Dre*_*vak 19

我不确定我是否理解你,但查询你可以尝试使用"user_source"表的触发器,程序,包和函数的源代码.

select * from user_source
Run Code Online (Sandbox Code Playgroud)


小智 9

我会使用DBA_SOURCE(如果您有权访问它),因为如果您需要的对象不属于您登录的模式,您将无法看到它.

如果您需要了解包中的函数和Procs,请尝试以下方法:

select * from all_source
 where type = 'PACKAGE'
   and (upper(text) like '%FUNCTION%' or upper(text) like '%PROCEDURE%')
   and owner != 'SYS';
Run Code Online (Sandbox Code Playgroud)

最后一行阻止返回所有sys内容(DBMS_等).如果您只想要自己的架构内容,这将在user_source中工作.


New*_* 01 6

我在尝试查找使用某个表的所有程序时遇到了这个问题

正如本文所指出的,Oracle SQL Developer 提供了此功能:https : //www.thatjeffsmith.com/archive/2012/09/search-and-browse-database-objects-with-oracle-sql-developer/

从视图菜单中,选择查找数据库对象。选择一个数据库连接。输入表的名称。在对象类型中,只保留函数、过程和包。在代码部分,选中所有源代码行。

在此处输入图片说明