Můžete dělat řešení jako @TonyAndrews manipulací s číselnými nebo datovými hodnotami. Pro VARCHAR2
alternativou k dynamickému SQL by mohly být dva výrazy:
order by
case when :sorting='ASC' then col1 end ASC,
case when :sorting='DESC' then col1 end DESC
Když :sorting
má hodnotu 'ASC'
výsledek tohoto ORDER BY
se stane, jako kdyby to bylo:
order by
col1 ASC,
NULL DESC
Když :sorting
má hodnotu 'DESC'
výsledek tohoto ORDER BY
se stane, jako kdyby to bylo:
order by
NULL ASC,
col1 DESC
Jednou nevýhodou této metody je, že případy, kdy optimalizátor může přeskočit operaci SORT, protože se jedná o index, díky kterému jsou data již roztříděna podle potřeby, se při použití metody CASE, jako je tato, nestane. Bez ohledu na to to nařídí operaci řazení.