Busqueda de cadena en toda la base

Velmanet
03 de Septiembre del 2004
Me gustaria saber como puedo realizar una busqueda de una cadena en toda la base de datos.
Por ejemplo buscar 'HOLA' y que me regrese en que tabla y columna se ecuentra.
Espero me puedan ayudar.

lemf
03 de Septiembre del 2004
Que tal,
Si deseas hacer ese tipo de consulta, que en tiempo, te va a costar bastantito y sobre todos deberias llevar un control sobre el tipo de datos de cada campo

* Deberias crear un procedimiento dinamico, con la inStrucion "execute immediate" de cada una de las tablas, usando la vista dba_tables o user_tables y luego por cada campo usando la vista all_cons_columns o user_cons_columns

Espero te sirva

Pablo Ponte Miserendino
03 de Septiembre del 2004
Es medio raro lo que pides pero hay una solucion relativamente sencilla:

Puedes Usar los diccionarios de Datos: User_tables y User_tab_columns....con el segundo solo tambien lo puedes hacer....

defines un cursor que levante todas los nombres de tablas de user_tables y luego otro que para que de cada tabla levante los nombres de cada una de las columnas de esta tabla QUE SEAN DEL TIPO DE DATO QUE ESTAS BUSCANDO

NOTA INTERMEDIA: puedes traer ambos datos, tabla y columna de user_tab_columns, pero este diccioneario tambien trae datos de vistas por lo cual estarias buscando datos dos o mas veces en el mismo lugar (al menos que la vista sea de un DBLINK)....

Una vez definidos estos cursores lo que haces es usarlos para armar dos bucles anidados y en el interior por medio de PL/SQL Dinámico puedes verificar si se cumple la concordancia de datos y conseguir la tabla/columna que necesitas, inclusive traer el rowid para acceder mas rápido .

Queda en ti decidir si quieres traer la primera concordancia que encuentre o todas o alguna en particular.....

Espero que te sirva...cualquier cosa me escribes..

Salu2