Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Buscar dato en toda la BD

Estas en el tema de Buscar dato en toda la BD en el foro de Oracle en Foros del Web. Que tal. Me urge localizar un dato, pero como BD es extremadamente grande , aun no lo localizo. Como le hago para localizarlo, es decir ...
  #1 (permalink)  
Antiguo 23/10/2006, 08:42
 
Fecha de Ingreso: abril-2002
Mensajes: 118
Antigüedad: 22 años, 7 meses
Puntos: 1
Buscar dato en toda la BD

Que tal.
Me urge localizar un dato, pero como BD es extremadamente grande , aun no lo localizo. Como le hago para localizarlo, es decir un una sentencia decirle que me busque en toda la base de datos, tablas ó vistas que me lo busque.

Se los agradeceria mucho.
__________________
________________
ISC. Alejandro Zapata Hernandez
  #2 (permalink)  
Antiguo 23/10/2006, 09:27
Avatar de FNX_NET  
Fecha de Ingreso: marzo-2004
Ubicación: EN EL INFIERNO.....
Mensajes: 1.707
Antigüedad: 20 años, 7 meses
Puntos: 7
algo asi creo

Select * from ALL_ALL_TABLES
__________________
:-D "Que se libere del cielo confinado; que mi cuerpo sea la espada de hielo negro que nos lleve al abismo; que ningún poder pueda detenernos...Destructora de las almas de los dioses!!!":adios:


:pirata:
  #3 (permalink)  
Antiguo 23/10/2006, 11:15
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años, 7 meses
Puntos: 3
Como dice FNX_NET, la tabla del sistema ALL_TABLES te visualiza todas las tablas dependiendo del esquema.
Si solo quieres saber el nombre de la tabla y no estas seguro que nombre es, haces un LIKE:

SELECT table_name
FROM all_tables
WHERE owner=tser_propietario and table_name like '%tabla_a_buscar%'

Para vistas es: ALL_VIEWS, similar en consulta a ALL_TABLES...
Saludos
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #4 (permalink)  
Antiguo 23/10/2006, 15:37
 
Fecha de Ingreso: abril-2002
Mensajes: 118
Antigüedad: 22 años, 7 meses
Puntos: 1
No no busco una tabla¡¡¡¡¡, si no un dato que este dentro de todos los campos de todas las tablas de la base de datos.
__________________
________________
ISC. Alejandro Zapata Hernandez
  #5 (permalink)  
Antiguo 23/10/2006, 15:52
Avatar de kikolice  
Fecha de Ingreso: marzo-2004
Mensajes: 1.510
Antigüedad: 20 años, 8 meses
Puntos: 7
directamente no existe forma, tendrias que realizar un PL/sql que obtenga la informacion de las tablas ( ALL_TABLES ), la informacion de las columnas ( ALL_TAB_COLUMNS , creo que asi se llamaba ) y de ahi que busque en cada columna el string que corresponda a lo que buscas
__________________
Blogzote.com :-) Mi blog
  #6 (permalink)  
Antiguo 24/10/2006, 07:31
 
Fecha de Ingreso: abril-2002
Mensajes: 118
Antigüedad: 22 años, 7 meses
Puntos: 1
Ok, y alguien tiene algun ejemplo sobre esto.....
__________________
________________
ISC. Alejandro Zapata Hernandez
  #7 (permalink)  
Antiguo 24/10/2006, 13:39
 
Fecha de Ingreso: abril-2002
Mensajes: 118
Antigüedad: 22 años, 7 meses
Puntos: 1
Gracias ya lo encontre

Realize una funcion llamada B_Datost la cual paso por parametro la tabla y el nombre de la columna, y solamente hago una consilta y me extrae la candiad de palabras encontradas.

SELECT AT.table_name, attc.column_name, B_Datost(AT.table_name, attc.column_name, 'CHIS-TAB') dato
FROM all_tables AT, all_tab_columns attc
WHERE AT.table_name = attc.table_name

CREATE OR REPLACE FUNCTION B_Datost (TABLA VARCHAR2, COLUMNA VARCHAR, PALABRA VARCHAR)
RETURN VARCHAR2
IS
tmpvar VARCHAR2(1500);
SELECT1 VARCHAR2(1500);
str_sql VARCHAR2(1500);
BEGIN


SELECT1 :='SELECT COUNT(' || COLUMNA || ') CANT FROM ' || TABLA || ' WHERE ' || COLUMNA || ' LIKE '|| CHR(39)||'%'|| PALABRA ||'%'|| CHR(39)||'';
str_sql := SELECT1;
EXECUTE IMMEDIATE str_sql INTO tmpvar;
dbms_output.put_line(tmpvar);


RETURN tmpvar;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
RETURN '0';
WHEN OTHERS
THEN
-- Consider logging the error and then re-raise
RAISE;
END B_Datost;
/
__________________
________________
ISC. Alejandro Zapata Hernandez
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:58.