Pular para o conteúdo

Fóruns SQL e PL/SQL Procurar string no banco Procurar string no banco

#99846
burga
Participante

    [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,