Du kan lave løsninger som @TonyAndrews ved at manipulere numeriske værdier eller dataværdier. For VARCHAR2
et alternativ til dynamisk SQL kunne være at have to udtryk:
order by
case when :sorting='ASC' then col1 end ASC,
case when :sorting='DESC' then col1 end DESC
Når :sorting
har værdien 'ASC'
resultatet af den ORDER BY
bliver som hvis det havde været:
order by
col1 ASC,
NULL DESC
Når :sorting
har værdien 'DESC'
resultatet af den ORDER BY
bliver som hvis det havde været:
order by
NULL ASC,
col1 DESC
En ulempe ved denne metode er, at de tilfælde, hvor optimizeren kan springe en SORT-operation over, fordi der er et indeks involveret, der gør, at dataene allerede er sorteret som ønsket, vil det ikke ske, når man bruger CASE-metoden som denne. Dette vil beordre en sorteringsoperation uanset hvad.