2009-03-10 28 views
12

SELECCIONAR * de ALL_OBJECTS devuelve los nombres de varios procedimientos/paquetes/tablas/otros objetos db. Quiero buscar dentro del código PL/SQL una cadena coincidente. ¿Cómo hago esto?Buscar código PL/SQL

Algo así como: (pseudocódigo) SELECT * FROM All_Code DONDE line_of_code como '% mitexto%'

Respuesta

28

usar algo como:

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

Hay muchas opciones, echa un vistazo a la tabla USER_SOURCE.

para buscar todas las codifican para una cadena:

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

Tenga en cuenta que la vista Código no está incluido en las tablas _SOURCE. El código de vista se almacena en [USER|ALL|DBA]_VIEWS.TEXT, que es una columna LARGA y difícil de consultar.

+2

O ALL_SOURCE WHERE OWNER = [schema] – cagcowboy

+2

Es posible que desee "ORDER BY tipo, nombre, línea" para que los resultados sean más claros. – Barry

+2

No insensible a mayúsculas/minúsculas: donde superior (texto) como superior (% lo que estoy buscando% ') – tuinstoel

Cuestiones relacionadas