存储过程以返回特定的记录间隔

时间:2012-05-15 20:00:59

标签: sql sql-server-2008 tsql

我必须在一个具有数十万条记录的表的应用程序中创建一个视图。出于显而易见的原因,我不想一次全部检索它们。

约定是使存储过程查询数据库表,因此我的计划是使存储过程返回记录间隔(如记录2000到3000)。我知道使用嵌套查询来检索TOP的一系列记录的技巧,但据我所知,你不能将参数参数化为TOP

这将与C#应用程序中的数据集和DataTable一起使用。

我该怎么做?

2 个答案:

答案 0 :(得分:4)

您可以利用SQL Server 2008中的ROW_NUMBER。以下查询将仅根据行号返回10行。

WITH Ordered AS (
SELECT ROW_NUMBER() OVER (ORDER BY OrderID) AS RowNumber, OrderID, OrderDate
FROM Orders)
SELECT * 
FROM Ordered
WHERE RowNumber BETWEEN 21 AND 30

答案 1 :(得分:3)

可以将参数参数化为top。将参数括在(大括号)中。

如果你还需要所有这些,那么一次性完成所有这些操作会更有效率。不需要大块。