【问题标题】:Stored procedure to return a specific interval of records返回特定间隔记录的存储过程
【发布时间】:2012-05-16 04:08:51
【问题描述】:

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

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

这将在 C# 应用程序中与数据集和 DataTables 结合使用。

我应该怎么做?

【问题讨论】:

    标签: sql sql-server-2008 tsql


    【解决方案1】:

    您可以利用 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
    

    【讨论】:

      【解决方案2】:

      可以将参数参数化到顶部。将参数括在(大括号)中。

      如果您无论如何都需要它们,那么一次性获得所有它们会更有效。无需分块。

      【讨论】:

      • 我不一定都需要它们。我很惊讶有人对几行感兴趣,但我仍然必须支持该功能。我会一次拿回一千左右。
      • 你可以像here这样的CTE页面
      猜你喜欢
      • 2019-04-20
      • 2017-05-06
      • 1970-01-01
      • 2014-09-16
      • 1970-01-01
      • 2015-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多