2009-03-10 10 views
12

SELECT * from ALL_OBJECTS gibt die Namen verschiedener Prozeduren/packages/tables/anderer db-Objekte zurück. Ich möchte in den PL/SQL-Code nach einer passenden Zeichenfolge suchen. Wie mache ich das?PL/SQL-Code suchen

So etwas wie: (Pseudo-Code) SELECT * FROM All_Code WHERE line_of_code like '% mytext%'

Antwort

28

Verwendung so etwas wie:

SELECT * 
     FROM USER_SOURCE 
    WHERE type='PACKAGE' 
     AND NAME='PACKAGE_NAME' 
    ORDER BY type, name, line; 

Es gibt viele Optionen, die USER_SOURCE Tabelle überprüfen.

für den gesamten Code für einen String suchen:

SELECT * 
    FROM ALL_SOURCE 
    WHERE UPPER(text) LIKE UPPER('%what I am searching for%') 
ORDER BY type, name, line 

Beachten Sie, dass der Code-Ansicht in den _SOURCE Tabellen nicht enthalten. View-Code ist in [USER|ALL|DBA]_VIEWS.TEXT gespeichert, die eine LONG-Spalte und schwer abzufragen ist.

+2

Oder ALL_SOURCE WHERE OWNER = [Schema] – cagcowboy

+2

Sie möchten vielleicht "ORDER BY Typ, Name, Zeile", um die Ergebnisse klarer zu machen. – Barry

+2

Machen Sie es case insensitive: wo oberen (Text) wie oberen (%, was ich suche%) – tuinstoel