Busqueda de cadena en toda la base
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.
Por ejemplo buscar 'HOLA' y que me regrese en que tabla y columna se ecuentra.
Espero me puedan ayudar.
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
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
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
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
