我需要在网页上显示一个网格。数据将通过存储过程来自 SQL Server 2008。由于存储过程返回了数千条记录,我决定选择一个工作正常的分页选项。在存储过程中,我执行以下操作:
declare @RowIdMin int=10
declare @RowIdMax int=25
select *
from (select Col1, Col2, ROW_NUMBER() over (order by Col1 desc) as RowId
from MyTable ) dt
where RowId BETWEEN @RowIdMin AND @RowIdMax
只要用户乐于获得按 Col1 排序的数据,此方法就可以正常工作。如果我事先不知道记录集必须按哪一列排序,我该如何重写?这不起作用:
declare @RowIdMin int=10
declare @RowIdMax int=25
声明@ColSort varchar(100)='MyColumn'
select *
from (select Col1, Col2, ROW_NUMBER() over (order by <b>@ColSort</b> desc) as RowId
from MyTable) dt
where RowId BETWEEN @RowIdMin AND @RowIdMax