U kunt oplossingen zoals @TonyAndrews doen door numerieke of gegevenswaarden te manipuleren. Voor VARCHAR2
een alternatief voor dynamische SQL zou kunnen zijn om twee expressies te hebben:
order by
case when :sorting='ASC' then col1 end ASC,
case when :sorting='DESC' then col1 end DESC
Wanneer :sorting
heeft de waarde 'ASC'
het resultaat van die ORDER BY
wordt alsof het zo was geweest:
order by
col1 ASC,
NULL DESC
Wanneer :sorting
heeft de waarde 'DESC'
het resultaat van die ORDER BY
wordt alsof het zo was geweest:
order by
NULL ASC,
col1 DESC
Een nadeel van deze methode is dat die gevallen waarin de optimizer een SORT-bewerking kan overslaan omdat er een index bij betrokken is die ervoor zorgt dat de gegevens al naar wens zijn gesorteerd, dat niet zal gebeuren wanneer de CASE-methode op deze manier wordt gebruikt. Dit zal een sorteeroperatie verplicht stellen, wat er ook gebeurt.