Можете да правите решения като @TonyAndrews чрез манипулиране на числови стойности или стойности на данни. За VARCHAR2
алтернатива на динамичния SQL може да бъде да има два израза:
order by
case when :sorting='ASC' then col1 end ASC,
case when :sorting='DESC' then col1 end DESC
Когато :sorting
има стойност 'ASC'
резултатът от този ORDER BY
става като ако беше:
order by
col1 ASC,
NULL DESC
Когато :sorting
има стойност 'DESC'
резултатът от този ORDER BY
става като ако беше:
order by
NULL ASC,
col1 DESC
Един недостатък на този метод е, че онези случаи, в които оптимизаторът може да пропусне операция SORT, тъй като има включен индекс, който прави данните вече сортирани по желание, това няма да се случи при използване на метода CASE като този. Това ще изисква операция за сортиране независимо от всичко.