PL / SQL: condiciones opcionales en la cláusula where, ¿sin sql dinámico?
Tengo una consulta donde no todas las condiciones son necesarias. Aquí hay un ejemplo de cómo se ve cuando se usan todas las condiciones:
select num
from (select distinct q.num
from cqqv q
where q.bcode = '1234567' --this is variable
and q.lb = 'AXCT' --this is variable
and q.type = 'privt' --this is variable
and q.edate > sysdate - 30 --this is variable
order by dbms_random.value()) subq
where rownum <= 10; --this is variable
Las partes marcadas como--this is variable
Son las partes que, bueno, varían! Si NO se especifica una condición, entonces no hay un valor predeterminado. Por ejemplo, si la entrada especifica "*" para q.type (pero deja todo lo demás igual), la consulta debe coincidir con todo para el tipo y ejecutarse como:
select num
from (select distinct q.num
from cqqv q
where q.bcode = '1234567' --this is variable
and q.lb = 'AXCT' --this is variable
--and q.type = 'privt' --this condition ignored because of "type=*" in input
and q.edate > sysdate - 30 --this is variable
order by dbms_random.value()) subq
where rownum <= 10; --this is variable
Sé que es posible usar sql dinámico para construir esta consulta sobre la marcha, pero me pregunto qué tipo de problemas de rendimiento podría causar, y si hay una mejor manera de hacerlo.