Sie können Lösungen wie @TonyAndrews ausführen, indem Sie numerische oder Datenwerte bearbeiten. Für VARCHAR2
Eine Alternative zu dynamischem SQL könnte darin bestehen, zwei Ausdrücke zu haben:
order by
case when :sorting='ASC' then col1 end ASC,
case when :sorting='DESC' then col1 end DESC
Beim :sorting
hat den Wert 'ASC'
das Ergebnis dieses ORDER BY
wird wie wenn es gewesen wäre:
order by
col1 ASC,
NULL DESC
Beim :sorting
hat den Wert 'DESC'
das Ergebnis dieses ORDER BY
wird wie wenn es gewesen wäre:
order by
NULL ASC,
col1 DESC
Ein Nachteil dieser Methode besteht darin, dass die Fälle, in denen der Optimierer eine SORT-Operation überspringen kann, weil ein Index beteiligt ist, der die Daten bereits wie gewünscht sortiert, bei Verwendung der CASE-Methode wie dieser nicht passieren. Dies wird in jedem Fall eine Sortieroperation vorschreiben.