[quote=”fabiommiranda”:257y7dbg]preciso procurar esse string dentro do campo … não o nome do campo …[/quote]
Oi Fábio, é exatamente isto que o Leandro está dizendo pra você fazer. Usando SQL’s dinâmicos, você monta as consultas de forma dinâmica e executa elas dentro de um bloco PL/SQL. Um exemplo basicão é:
DECLARE
stmt VARCHAR2(4000);
cnt NUMBER(10);
BEGIN
FOR tab IN (SELECT * FROM DBA_TAB_COLUMNS
WHERE OWNER IN ('OWNER1','OWNER2',...)
AND DATA_TYPE IN ('VARCHAR2','CHAR','VARCHAR',...))
LOOP
stmt := 'SELECT COUNT(*) FROM' || tab.OWNER || '.' || tab.TABLE_NAME || ' WHERE ' || tab.COLUMN_NAME || ' LIKE ''%BRASIL%''';
EXECUTE IMMEDIATE stmt INTO cnt;
IF (cnt > 0) THEN
DBMS_OUTPUT.PUT_LINE('tabela: ' || tab.TABLE_NAME || ', coluna: ' || tab.COLUMN_NAME);
END IF;
END LOOP;
END;
/
Aí é só fazer os acertos de tipos de dados e owner no FOR SELECT. Mesmo que tiver algum erro, que eu tenha esquecido alguma coisa nesse código, pelo menos, o jeito de se resolver o que você quer é por esse caminho aí. É só um exemplo do que o Leandro já disse.
Abraços,