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
match_count INTEGER;
BEGIN
FOR t IN (SELECT owner, table_name, column_name
FROM all_tab_columns
WHERE owner='USUARIOBBDD' and data_type LIKE '%CHAR%') LOOP
EXECUTE IMMEDIATE
'SELECT COUNT(*) FROM ' || t.owner || '.' || t.table_name ||
' WHERE '||t.column_name||' = :1'
INTO match_count
USING 'CADENAABUSCAR';
IF match_count > 0 THEN
dbms_output.put_line( t.table_name ||' '||t.column_name||' '||match_count );
END IF;
END LOOP;
END;
Donde las variables a reemplazar son:
USUARIOBBDD: el nombre del usuario de bbdd que contiene las tablas.
CADENAABUSCAR: El texto que necesitamos encontrar en todas las tablas.
Si hay valores encontrados, esto generará una salida al DBMS.
Espero que les resulte útil.
Un saludo.
Espero que les resulte útil.
Un saludo.
0 comentarios:
Publicar un comentario