获取表中的分页记录。(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 语句的朋友,看到这些代码一定能明白的。



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值