Obtener la Lista de Objetos de un Package en Oracle

 Hola amigos

Abro, este post, por que no encuentro una forma de desarrollar un query, lo que he encontrado es un query para obtener los package

SELECT OBJECT_NAME,OBJECT_TYPE FROM dba_objects where owner='webmaster' and object_type='PACKAGE'"

pero me gustaria hacer un query que al pasar como parametro el nombre de un package, me de la lista de los objetos relacionados, tales como procedimientos, funciones, etc

 

saludos cordiales

 

 

Bueno amigos

yo mismo me respondere, jejejejeje, investigando hize esto

 

 select * from dba_source where owner='EXTRANET' and line=3 and type='PACKAGE BODY'

 

si halguien tiene otra forma, le agradeceria compartirla

 

saludos cordiales

 

Eloy

En respuesta a por Eloy

Eloy, gracias por compartir la solución que has encontrado.

Otra cosa que se puede hacer es utilizar las facilidades que ofrecen las herramientas visuales de desarrollo/administración. Con Oracle SQL Developer, por ejemplo, si seleccionas un procedure, que puede formar parte de un package, en el explorador de objetos tienes una pestaña de Dependencias que te muestra los objetos de los que depende el procedure para poder ejecutarse. También tienes una pestaña de Referencias que te muestra todos los objetos que utilizan o que llaman a ese Procedimiento.

Dependencias y Referencias a un Procedure con Oracle SQL Developer

 

Si no recuerdo mal, otras herramientas como PL/SQL Developer o TOAD también tienen utilizades parecidas.

En respuesta a por Carlos

 Hola Carlos

 

gracias por contestar, es una buena idea.

 

pero mira algo raro, hace poco usaba ese query para ver los package, en un servidor X de una empresa, ahora resulta que no funciona, pues el query lo llevo al sql developer y desde alli lo ejecuto y me dice que la tabla o vista no existe, debe ser por permisos o algo parecido, por que la misma base de datos la tengo instalada en forma local en mi laptop  y si me funciona perfectamente todo

 

aca el query

 

 SELECT OBJECT_NAME,OBJECT_TYPE FROM dba_objects where owner='WEBMASTER' and object_type='PACKAGE'

 

error: 942 tabla o vista no existe

 

En respuesta a por Eloy

Efectivamente ha de ser un tema de privilegios. Para poder consultar las tablas o vistas del diccionario de datos de datos (como dba_objects) el usuario ha de tener permisos de DBA.

El usuario que más se suele utilizar para estas cosas es SYSTEM, aunque puedes hacerlo con cualquier otro, siempre que tenga o le otorges antes los privilegios necesarios.

Hola,

en primer lugar gracias por este post, es muy útil y se agradece encontrar tantas utilidades en un mismo lugar.

En segundo lugar tengo una pregunta que espero que me podáis contestar:

-Estoy buscando una palabra en todos los paquetes de mi base de datos, en un principio estoy usando este script:

select *

from all_source

where owner = 'propietario' and

         type in ('package', 'package body')

         text like 'texto a buscar'

pero no me aparece nada, me imagino que en text no es el texto del script y por eso no me sale.

¿alguna ayuda o sugerencia de como buscar una palabra en todos los paquetes de la BBDD?

pd.: Si no fuera mucho pedir, ¿podríais mandarme la contestación a mi email personal además de en este post para que lo pueda usar cualquier otra persona que le pase lo mismo? es drakoniano@gmail.com

Gracias !!

En respuesta a por FRANCISCO (no verificado)

La consulta es correcta. Lo único que veo que pones todo en minúsculas. Al comparar Oracle distingue entre mayúsculas y minúsculas y los tipos, por ejemplo, los guarda en mayúsculas.

Tenlo en cuenta al especificar el owner, y los tipos han de ser 'PACKAGE' y 'PACKAGE BODY'. Ten en cuenta también que en cada fila se almacena una linea del procedure, por lo que te has de asegurar de que lo que busques en el campo TEXT esté en una sola linea y no distribuido en más de una. 

Si quieres asegurarte de que no te falla la búsqueda por el tema de las mayúsculas te recomiendo convertir el texto a mayúsculas con UPPER:

Select * 
from all_source 
where owner = 'PROPIETARIO' and
      type in ('PACKAGE', 'PACKAGE BODY') and
      upper(text) like '%Texto a buscar%'

Te envío la respuesta por email, pero para otra vez es más sencillo que valides tu usuario y, si lo permites en tu perfil de usuario, cada vez que alguien responda a una publicación tuya el sistema te enviará un aviso automáticamente.

En respuesta a por Carlos

 Hola,

Gracias por contestar, efectivamente fue por lo de las minúsculas. Más concretamente fue por poner la primera letra del owner que estaba en minúscula y es en mayúscula. Fallo de novato xD

 

Por cierto ya me logueé y echaré un vistazo de vez en cuando a ver si puedo ayudar a alguien ^ ^

Para que veas el contenido de un paquete , es decir el listado de objetos que lo componen, lo puedes hacer accediendo a la vista all_procedures, donde la columna Object_name te lista el nombre del paquete y la columna procedure_name te lista el nombre no solo de los procedimientos sino tambien el nombre de las funciones que componen el paquete

En respuesta a por Anonim. (no verificado)

Hola:

agradecería me puedan ayudar con una query para buscar una palabra en las tablas de mi bbdd oracle, he estado leyendo este foro y veo ejemplos sobre package, entiendo q para buscar una palabra o concepto en tablas de la bbdd oracle es distinto.

espero me ayuden

un saludo

En respuesta a por Carlos

 Hola Carlos,

 

mira yo hize este aplicativo

 

http://eloynet.blogspot.com/2011_09_01_archive.html

http://eloynet.blogspot.com/

 

y trabaja con bases de datos sql y oracle, pues de conecta a una base seleccionas una tabla y tegenera los procedimientos almacenados. ahora para oracle yo puede seleccionar un package y me gustaria que los stored que genera mi aplicativo se muevan al paquete que seleccione, hay que tener mucho cuidado con esto.

 

conoces de algun query que me de la cabecera y el cuerpo de un package y que pueda obtener el stored determinado

 

 

 saludos

gracias