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