Я вижу два лучших способа сделать это. Вместо использования динамического SQL-запроса, я бы использовал фактический SQL-оператор в хранимой процедуре, в который входят вещи, которые вы хотите упорядочить по:
select
t.*
from
table as t
order by
case @val
when 1 then column1
when 2 then column2
end
Если вы обнаружите, что упорядочение по является слишком динамичным и должно быть построено, или это проще сделать, то я бы создал табличную функцию, которая возвращает набор, а затем создал бы динамический SQL-оператор для этого:
select
t.*
from
xfn_Function(@arg1, @arg2) as t
order by
t.col1, t.col2
Где, конечно, t.col1, t.col2 и т. Д., И т. Д. Динамически генерируются перед отправкой всего этого на сервер.