Jeg kan umiddelbart se to måder at løse dette på. Hvis du KUN skal ordne efter en kolonne kan det se ud som følger :
if @Order = "ASC"
select * from #users
order by case
when @OrderCol = "ID" then UserID
else [Name]
end asc
else
select * from #users
order by case
when @OrderCol = "ID" then UserID
else [Name]
end desc
Hvis du har flere kolonner bliver dette dog umuligt, men så kan du ty til at opbygge SQL sætningen som en streng i stedet og så fyre den af med sp_executesql. Der kan du lave hvad som helst. Denne løsning har dog den ulempe at den ikke kan optimere din procedure.