9

SQL Server 2012にクエリがあり、指定したページサイズとそのページに基づいて多数のレコードを取得する必要があります。次のようになります。


SELECT LocID, LocName
FROM Locations
ORDER BY LocName OFFSET @PageNum ROWS
FETCH NEXT @PageSize ROWS ONLY

コードは非常に単純です。しかし、私がする必要があるのは、ページングを正しく返すための関数にそれを入れることです。ただし、この関数からすべてのレコードを戻す必要がある可能性もあるため、OFFSETまたはFETCHなしで関数を呼び出すオプションが必要です(ほとんどの場合、これはページングがなく、ストレートデータのみである必要があるレポート用です) 。私はこれを行うための良い方法を考えることができません。

4

1 に答える 1

11

あなたは言えた:

@PageNum  INT,
@PageSize INT

...

SELECT @PageSize = COALESCE(@PageSize, 2000000000);   
-- 2 billion should be enough?

... OFFSET (COALESCE(@PageNum, 1)-1)*@PageSize ROWS
FETCH NEXT @PageSize ROWS ONLY;

すべての行が必要な場合は、両方のパラメーターにNULLを渡します。

于 2012-09-18T03:32:28.907 に答える