Du kan göra lösningar som @TonyAndrews genom att manipulera numeriska eller datavärden. För VARCHAR2 ett alternativ till dynamisk SQL kan vara att ha två uttryck:
order by
case when :sorting='ASC' then col1 end ASC,
case when :sorting='DESC' then col1 end DESC
När :sorting har värdet 'ASC' resultatet av den ORDER BY blir som om det hade varit:
order by
col1 ASC,
NULL DESC
När :sorting har värdet 'DESC' resultatet av den ORDER BY blir som om det hade varit:
order by
NULL ASC,
col1 DESC
En nackdel med den här metoden är att de fall där optimeraren kan hoppa över en SORT-operation eftersom det finns ett index inblandat som gör att data redan sorteras som önskat, det kommer inte att hända när man använder CASE-metoden som denna. Detta kommer att kräva en sorteringsoperation oavsett vad.