You can do a dynamic sort without dynamic SQL. Not going to be fast, but that's the price you pay for such code.
ORDER BY
CASE @Ordering WHEN 'Column1' THEN Column1 .....
Gail Shaw
Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability