2009-12-18 59 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

相關問題