Pular para o conteúdo

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

#101312
marcelo_rh
Participante

    @rman,
    obrigado pela resposta…. é o seguinte:

    eu tenho uma tabela de movimentos, por exemplo:
    MOVIMENTO ( movimento, campo1, campo2, campo3, campo4, campo5, campo6).

    Na minha procedure, eu recebo por parâmetro os 6 campos, que podem vir com informação ou nulos.

    Quando estiver nulo, estes não são adicionados à cláusula where. Exemplo de código:

    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 ” end

    ||case when p_campo6 is not null then ‘ and campo6 = :p_campo6’ else ” end

    Bom, agora eu tenho então 64 possibilidades de parâmetros no meu comando SQL: pois são 4 variaveis que podem ser nulas(não entrando no comando) ou podem ter valor e serem filtradas.

    Desta forma, ao abrir o meu cursor:
    open c_mov for v_sql
    using …

    Não consigo saber quantos e quais campos terei que adicionar na clásula “using”.

    Ficou mais claro?

    Obrigado.