Pular para o conteúdo

Fóruns SQL e PL/SQL Execute immediate com SQL dinâmico Execute immediate com SQL dinâmico

#101324
marcelo_rh
Participante

    A solução encontrada no livro do ORACLE não é a melhor a ser seguida, mas funciona perfeitamente:

    utilizar sempre todas as variáveis BIND quando colocado o “using” e adicionar ao select, alteranativas verdadeiras quando não deveria utilizar a variável.

    Segue exemplo:
    v_sql:=’select movimento from MOVIMENTO
    where movimento > :p_mov’ –este é o único parâmetro fixo
    ||case when p_campo1 is not null
    then ‘ and campo1 = :p_campo1’
    else ‘ and (1=1 or :p_campo1 is null)’
    end

    ||case when p_campo6 is not null
    then ‘ and campo6 = :p_campo6’
    else ‘ and (1=1 or :p_campo6 is null)’
    end

    Obrigado novamente.