PL / SQL - Необязательные условия в выражении where - без динамического sql?

У меня есть запрос, где не все условия необходимы. Вот пример того, как это выглядит, когда используются все условия:

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

Части отмечены как--this is variable являются частями, которые, ну, варьируются! Если условие НЕ указано, то значение по умолчанию отсутствует. Например, если на входе указано «*» для q.type (но все остальное остается неизменным), тогда запрос должен соответствовать всему типу и выполнить как:

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

Я знаю, что можно использовать динамический sql для создания этого запроса на лету, но мне интересно, какие проблемы с производительностью это может вызвать, и если есть лучший способ сделать это.

Ответы на вопрос(5)

Ваш ответ на вопрос