Web ページにグリッドを表示する必要があります。データは、ストアド プロシージャを介して SQL Server 2008 から取得されます。sproc は何千ものレコードを返すので、問題なく動作するページング オプションを使用することにしました。ストアド プロシージャでは、次のようなことを行います。
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