oracle - research - Consulta para buscar todos los paquetes para tabla y/o columna
hashtags twitter (4)
¿Existe una consulta que pueda ejecutar para buscar todos los paquetes y ver si se usa una tabla y / o columna en particular en el paquete? Hay demasiados paquetes para abrir cada uno y hacer un descubrimiento sobre los valores que estoy buscando.
A veces, la columna que está buscando puede ser parte del nombre de muchas otras cosas que no le interesan.
Por ejemplo, hace poco estuve buscando una columna llamada "BQR", que también forma parte de muchas otras columnas, como "BQR_OWNER", "PROP_BQR", etc.
Así que me gustaría tener la casilla de verificación que los procesadores de texto tienen que indicar "Sólo palabras completas".
Lamentablemente, LIKE no tiene esa funcionalidad, pero REGEXP_LIKE puede ayudar.
SELECT *
FROM user_source
WHERE regexp_like(text, ''(/s|/.|,|^)bqr(/s|,|$)'');
Esta es la expresión regular para encontrar esta columna y excluir las otras columnas con "BQR" como parte del nombre:
(/s|/.|,|^)bqr(/s|,|$)
La expresión regular coincide con espacio en blanco (s), o (|) punto (.), O (|) coma (,), o (|) inicio de línea (^), seguido de "bqr", seguido por espacio en blanco, coma o fin de línea ($).
Por cierto, si necesita agregar otros caracteres como "(" o ")" porque la columna se puede usar como "UPPER (bqr)", esas opciones se pueden agregar a las listas de antes y después de los caracteres.
(/s|/(|/.|,|^)bqr(/s|,|/)|$)
Puedes hacerlo:
select *
from user_source
where upper(text) like upper(''%SOMETEXT%'');
Alternativamente, SQL Developer tiene un informe incorporado para hacer esto en:
View > Reports > Data Dictionary Reports > PLSQL > Search Source Code
Los documentos 11G para USER_SOURCE están here
puede usar las vistas *_DEPENDENCIES
, por ejemplo:
SELECT owner, NAME
FROM dba_dependencies
WHERE referenced_owner = :table_owner
AND referenced_name = :table_name
AND TYPE IN (''PACKAGE'', ''PACKAGE BODY'')