2009-12-18 61 views
2

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

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

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 

有更优化和快速的方式完成这一任务的一种方式?

在此先感谢。

+1

你不使用包握住你的程序? :-( – 2009-12-18 13:13:00

回答

12

是,使用USER_SOURCE:

select distinct name 
from user_source 
where type = 'PROCEDURE' 
and lower(text) like lower('%the_text_you_want%'); 
+0

+1非常感谢 – RRUZ 2009-12-18 13:56:49

+0

感谢一百万。节省了相当长的时间 – Rohan 2013-03-14 08:22:54

相关问题