Cómo buscar una cadena de texto en todas las tablas y todos los campos de una base de datos Oracle.

Hola Amig@s,

Si necesitamos buscar una cadena en una base de datos Oracle, por ejemplo un texto que se llame PEPE, podemos hacerlo con el siguiente procedimiento.

declare

    num_rows number;
    texto_sql varchar2(250);
    info_texto varchar2(100);

begin

    dbms_output.enable(1000000);
    for x in (select table_name, column_name from dba_tab_columns
               where data_type in ('VARCHAR','VARCHAR2','CHAR')
                 and owner='USUARIOBBDD' and table_name like '%LASTABLASCOMIENZANPOR%')
    loop
         texto_sql:='select count(*) into :num_rows from '||x.table_name||' where '||x.column_name||' like ''%CADENAABUSCAR%''';
         execute immediate texto_sql into num_rows;
         if num_rows>0
         then
              info_texto:='La tabla: '||x.table_name||' contiene la cadena que estás buscando';
              dbms_output.put_line (info_texto);
         end if;
    end loop;
end;

Donde las variables a reemplazar son:

USUARIOBBDD: el nombre del usuario de bbdd que contiene las tablas.
LASTABLASCOMIENZANPOR: busca la mascara con la que comiencen las tablas.
CADENAABUSCAR: El texto que necesitamos encontrar en todas las tablas.

Espero que les resulte útil.
Un saludo.
Share on Google Plus
    Blogger Comment

0 comentarios: