Consulta SQL para localizar valor em todas as tabelas

Segue script abaixo que efetua uma pesquisa em todas as tabelas e suas respectivas colunas em busca de um determinado valor (texto, numero, data) com um determinado tipo de dado.


SET SERVEROUTPUT ON SIZE 100000

DECLARE
match_count INTEGER;
-- Digite o OWNER da tabela você está procurando
v_owner VARCHAR2(255) :='SEU_OWNER';

-- Digite o tipo de dado você procura (em LETRAS MAIÚCULA)
-- VARCHAR2, NUMBER, etc.
v_data_type VARCHAR2(255) :='%VARCHAR2%';

-- Digite o textp que você deseja localizar
v_search_string VARCHAR2(4000) :='%MARIA%';

BEGIN
dbms_output.put_line('passo 1' );
FOR t IN (SELECT table_name, column_name FROM all_tab_columns where owner=v_owner and data_type LIKE v_data_type) LOOP
dbms_output.put_line(table_name);
EXECUTE IMMEDIATE
'SELECT COUNT(*) FROM ' || v_owner || '.' || t.table_name || ' WHERE ' || t.column_name || ' LIKE :1'
INTO match_count
USING v_search_string;

IF match_count > 0 THEN
dbms_output.put_line( t.table_name || ' ' || t.column_name || ' ' || match_count );
END IF;

END LOOP;
END;

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s