Oracle – Dica Rápida: Pesquisar texto no corpo dos objetos function, trigger, procedure e packages

Dicas simples para pesquisar nos objetos do banco por um texto específico. Esta rotina pesquisa em objetos do tipo FUNCTION, TRIGGER, PROCEDURE E PACKAGES. Para proceder com a pesquisa substitua os campos TEXTO_PROCURADOe SEU_SCHEMA

SELECT OWNER||'.'||NAME,LINE,TEXT
  FROM ALL_SOURCE
 WHERE TYPE IN ('TRIGGER','FUNCTION','PACKAGE BODY','PROCEDURE')
   AND UPPER(TEXT) LIKE UPPER('%TEXTO_PROCURADO%') 
   AND OWNER IN ('SEU_SCHEMA')

Caso deseje, você poderá transformar esta query em uma procedure que imprime os resultados em tela (para chamadas rápidas):

CREATE OR REPLACE PROCEDURE pesquisa_texto(P_TEXTO IN VARCHAR2) is

BEGIN

 FOR R IN (
 SELECT OWNER||'.'||NAME LOCALIZ,LINE,TEXT
  FROM ALL_SOURCE
 WHERE TYPE IN ('TRIGGER','FUNCTION','PACKAGE BODY','PROCEDURE')
   AND UPPER(TEXT) LIKE UPPER('%'||P_TEXTO||'%') -- TEXTO PROCURADO
   AND OWNER IN ('SEU_SCHEMA')
 ) LOOP
        Dbms_Output.Put_Line('LOCAL: '||R.LOCALIZ||' - '||'LINE: '||R.LINE||' - TEXT: '||R.TEXT);
 END LOOP;

END;
/

So, what do you think ?