› Fóruns › SQL e PL/SQL › Execute immediate com SQL dinâmico › Execute immediate com SQL dinâmico
@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.