在oracle中的存储过程的源代码(DDL)中查找字符串

RRU*_*RUZ 3 sql string oracle

我需要在源代码(DDL)中为Oracle模式中的所有存储过程找到一个字符串.

我使用此查询来执行任务,但我认为可以改进

SELECT T0.OBJECT_NAME
FROM USER_PROCEDURES T0 
WHERE T0.OBJECT_TYPE='PROCEDURE'
AND INSTR( (SELECT DBMS_METADATA.GET_DDL('PROCEDURE',T0.OBJECT_NAME,'MySCHEMA') 
            FROM DUAL), 'TheStringToSearch' )>0
Run Code Online (Sandbox Code Playgroud)

有没有办法以更优化和快速的方式完成这项任务?

提前致谢.

Ton*_*ews 14

是的,使用USER_SOURCE:

select distinct name
from   user_source
where  type = 'PROCEDURE'
and    lower(text) like lower('%the_text_you_want%');
Run Code Online (Sandbox Code Playgroud)