SQL Dinâmico

Nós precisamos algumas vezes utilizar um mesmo SELECT para selecionar diferentes registros considerando condições de filtro diferentes.  Uma alternativa é utilizar duas instruções SELECT com diferentes condições de busca na cláusula WHERE. Outra é utilizar SQL Dinâmico.
Por exemplo, considere a busca abaixo:

SELECT *
FROM table_1
WHERE fld_date = 200301

 

Agora, o que aconteceria se você precisasse localizar um determinado registro para a data de 200310?  Teria que elaborar uma condição de filtro para cada registro?

Se você utilizar uma variável aux_ID para setar dinamicamente o valor de um ID, você terá um comando SQL que poderá ser criado dinamicamente:

  

SELECT fld_id, fld_name, fld_lastname, fld_date, .....

FROM   table_1

WHERE  fld_date = 200301 AND

       fld_id   = CASE

                  WHEN :aux_id > 0

                        THEN aux_id

                        ELSE fld_id

                  END