获取表中的分页记录。(PageIndex 、PageSize)

来源:http://bokee.shinylife.net/blog/article.asp?id=469

 

在网页中如果记录很多的话,不可能全部显示,所以一定会用到分页。

如果在页面中再进行分页显示的话,可已经从数据库里读取出了所有的记录。特别的在较大型网站记录非常多的时候,这种做法是非常不可取的。所以必须在读取数据的时候,就应该只读取所需的数据。

有一种典型的做法,它在微软 .Framework 2.0 中被采用。如下SQL代码:

Create PROCEDURE [dbo].[GetAllRecords]
    @PageIndex             int,
    @PageSize              int
AS
BEGIN
    -- 设定记录边界
    DECLARE @PageLowerBound int
    DECLARE @PageUpperBound int
    DECLARE @TotalRecords   int
    SET @PageLowerBound = @PageSize * @PageIndex
    SET @PageUpperBound = @PageSize - 1 + @PageLowerBound

    -- 创建一个临时表,自动生成 ID
    Create TABLE #PageIndexForRecords
    (
        IndexId int IDENTITY (0, 1) NOT NULL,
        TableId uniqueidentifier
    )

    -- 导入记录
    Insert INTO #PageIndexForRecords (TableId)
    Select TableKey FROM TableName

    -- 返回指定页记录
    Select * FROM TableName
    FROM #PageIndexForRecords p, TableName tn
    Where (tn.TableKey = p.TableId) AND (p.IndexId >= @PageLowerBound) AND
    (p.IndexId <= @PageUpperBound)
END

我虽然看过很多种写法,但还是最喜欢这种,很正规的写法。
我想了解 SQL 语句的朋友,看到这些代码一定能明白的。



你可能感兴趣的:(web开发)