2009-03-10 11 views
12

SELECT * from ALL_OBJECTS restituisce i nomi di varie procedure/pacchetti/tabelle/altri oggetti db. Voglio guardare all'interno del codice PL/SQL per una stringa corrispondente. Come faccio a fare questo?Cerca codice PL/SQL

Qualcosa di simile: (pseudocodice) SELECT * FROM WHERE All_Code line_of_code come '% mytext%'

risposta

28

Usa qualcosa come:

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

Ci sono molte opzioni, controlla la tabella di USER_SOURCE.

Per cercare tutto il codice per una stringa:

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

noti che visualizzare il codice non è inclusa nelle tabelle _SOURCE. Il codice di vista è memorizzato in [USER|ALL|DBA]_VIEWS.TEXT che è una colonna lunga e difficile da interrogare.

+2

Oppure ALL_SOURCE WHERE OWNER = [schema] – cagcowboy

+2

È possibile che si desideri "ORDINA per tipo, nome, linea" per rendere più chiari i risultati. – Barry

+2

Riduci la distinzione tra maiuscole e minuscole: dove superiore (testo) come superiore (% di quello che sto cercando% ') – tuinstoel