Możesz robić rozwiązania takie jak @TonyAndrews, manipulując wartościami liczbowymi lub danymi. Dla VARCHAR2 alternatywą dla dynamicznego SQL może być posiadanie dwóch wyrażeń:
order by
case when :sorting='ASC' then col1 end ASC,
case when :sorting='DESC' then col1 end DESC
Kiedy :sorting ma wartość 'ASC' wynik tego ORDER BY staje się tak, jakby to było:
order by
col1 ASC,
NULL DESC
Kiedy :sorting ma wartość 'DESC' wynik tego ORDER BY staje się tak, jakby to było:
order by
NULL ASC,
col1 DESC
Jedną z wad tej metody jest to, że przypadki, w których optymalizator może pominąć operację SORT, ponieważ jest zaangażowany indeks, który powoduje, że dane są już posortowane w pożądany sposób, nie wystąpią przy użyciu metody CASE w ten sposób. Będzie to wymagać operacji sortowania bez względu na wszystko.