› Fóruns › SQL e PL/SQL › Problemas com o join › Problemas com o join
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