Pular para o conteúdo

Fóruns SQL e PL/SQL Problemas com o join Problemas com o join

#90767
burga
Participante

    Oi Shiono,

    No SQL dinâmico você executa qualquer comando SQL que pode ser montado em tempo de execução.

    Assim você pode organizar a lógica do procedimento/função pra montar seu SQL em uma String, executar o comando SQL montado e retornar o valor buscado (no caso de ser um SELECT).

    Segue um exemplo:

    DECLARE
    TYPE CUR_TYP IS REF CURSOR;
    c_cursor CUR_TYP;
    fila PAISES%ROWTYPE;
    v_query VARCHAR2(255);
    BEGIN
    v_query := 'SELECT * FROM PAISES';

    OPEN c_cursor FOR v_query;
    LOOP
    FETCH c_cursor INTO fila;
    EXIT WHEN c_cursor%NOTFOUND;
    dbms_output.put_line(fila.DESCRIPCION);
    END LOOP;
    CLOSE c_cursor;
    END;

    Note que
    v_query := 'SELECT * FROM PAISES';
    é o SQL em forma de uma String, que pode ser montada dinamicamente.

    Aí vai o link de onde eu tirei o bloco de código do exemplo e mais outros links que explicam melhor o recurso:
    http://www.devjoker.com/asp/ver_contenidos.aspx?co_contenido=66
    http://download.oracle.com/docs/cd/B10501_01/appdev.920/a96590/adg09dyn.htm
    http://download-uk.oracle.com/docs/cd/B28359_01/appdev.111/b28370/dynamic.htm