parametros - SQL para buscar objetos, incluidos los procedimientos almacenados, en Oracle
procedimiento almacenado oracle select (5)
ALL_SOURCE describe el origen de texto de los objetos almacenados accesibles para el usuario actual.
Aquí hay una solución
select * from ALL_SOURCE where text like ''%some string%'';
Necesito escribir algunos sql que me permitan consultar todos los objetos en nuestra base de datos Oracle. Desafortunadamente, las herramientas que podemos usar no tienen esto incorporado. Básicamente, necesito buscar en todas las tablas, procedimientos, disparadores, vistas, todo.
Sé cómo buscar nombres de objetos. Pero necesito buscar el contenido del objeto. es decir, SELECT * FROM DBA_OBJECTS WHERE object_name = ''% search string%'';
Gracias, Glenn
Llegué a esta pregunta mientras trataba de encontrar todos los procedimientos que usan cierta tabla
Oracle SQL Developer ofrece esta capacidad, como se señala en este artículo: https://www.thatjeffsmith.com/archive/2012/09/search-and-browse-database-objects-with-oracle-sql-developer/
En el menú Ver, elija Buscar objeto DB. Elija una conexión de base de datos. Ingrese el nombre de la tabla. En Object Types, conserve solo funciones, procedimientos y paquetes. En la sección Código, marque Todas las líneas de origen.
No estoy seguro de haber entendido la pregunta, pero si desea buscar objetos en la base de datos para una cadena de búsqueda en particular, intente:
SELECT owner, name, type, line, text
FROM dba_source
WHERE instr(UPPER(text), UPPER(:srch_str)) > 0;
Desde allí, si necesita más información, puede buscar el número de objeto / línea.
No estoy seguro si te entiendo, pero para consultar el código fuente de tus disparadores, procedimientos, paquetes y funciones puedes probar con la tabla "user_source".
select * from user_source
Usaría DBA_SOURCE (si tiene acceso) porque si el objeto que necesita no pertenece al esquema en el que está conectado, no lo verá.
Si necesita conocer las funciones y los Procs dentro de los paquetes, intente algo como esto:
select * from all_source
where type = ''PACKAGE''
and (upper(text) like ''%FUNCTION%'' or upper(text) like ''%PROCEDURE%'')
and owner != ''SYS'';
La última línea evita que se devuelva todo el material del sistema (DBMS_ et al). Esto funcionará en user_source si solo quieres tus propios esquemas.