2011-03-25 39 views

Respuesta

5

Esto lo hará , pero puede producir falsos positivos para los nombres de las columnas genéricos

SELECT DISTINCT type, name 
FROM dba_source 
WHERE owner = 'OWNER' 
AND text LIKE '%COLUMN_NAME%'; 

donde el propietario es el esquema que posee los procedimientos almacenados que desea buscar y COLUMN_NAME es el nombre de la columna que desea encontrar. Si usted no utiliza nombres de columna caso mixtos entonces se puede sustituir la última línea con

AND UPPER(text) LIKE '%COLUMN_NAME%'; 

y escriba el nombre de la columna en las capitales para obtener una búsqueda que ignore.

+0

Probé el código y obtuve el siguiente error Error en la línea 1 ORA-00942: la tabla o vista no existe. Estoy usando Oracle 11g – Vani

+2

Supongo que no tienes acceso a dba_source. Use all_source en su lugar. – Lunc

+0

¡Gracias! Está funcionando gr8 !! .. – Vani

1

No hay ninguna forma garantizada, pero se puede buscar de usuario/all/dba_source usando regexp_like para comprobar si hay palabras completas, y una referencia cruzada con que el usuario/Todo/dba_dependencies a reducir la lista de paquetes para comprobar.

select s.name, s.type, s.line, s.text 
from user_source s 
where ltrim(s.text,chr(9)||' ') not like '--%' 
and regexp_like(lower(s.text),'\Wyour_column_name_here\W') 
and (s.name, s.type) in 
     (select d.name, d.type 
     from user_dependencies d 
     where d.referenced_owner = user 
     and d.referenced_name = 'YOUR_TABLE_NAME_HERE'); 

o si podría haber referencias a ella desde otros esquemas,

select s.owner, s.name, s.type, s.line, s.text 
from all_source s 
where ltrim(s.text,chr(9)||' ') not like '--%' 
and regexp_like(lower(s.text),'\Wyour_column_name_here\W') 
and (s.owner, s.name, s.type) in 
     (select d.owner, d.name, d.type 
     from all_dependencies d 
     where d.referenced_owner = user 
     and d.referenced_name = 'YOUR_TABLE_NAME_HERE'); 

que te pueden hacer que sólo tiene que utilizar select distinct s.owner, s.name, s.type ... para obtener una lista de objetos para investigar.

Cuestiones relacionadas