A
При поиске можно статически указать все нужные варианты параметров через условные операторы
and t.field1 = nvl( :param , t.field1)...
При сортировке по одному столбцу можно тоже статику сделать:
order by
(case when :sort_column = 'col1' then col1 end),
(case when :in_sort_column = 'col2' then col2 end),
(case when :sort_column = 'col3' then col3 end)
По аналогии можно написать и для множественной сортировки, и для направления ASC, DESC
Если все же нужен динамический запрос, тут рекомендуют Camel Templating