SQL Server 的通用分页显示存储过程
本文详述实现小数据量和海量数据的通用分页显示存储过程
AD:
建立一个 Web 应用,分页浏览功能必不可少。这个问题是数据库处理中十分常见的
问题。经典的数据分页方法是:ADO 纪录集分页法,也就是利用 ADO 自带的分页功能(利
用游标)来实现分页。但这种分页方法仅适用于较小数据量的情形,因为游标本身有缺点:
游标是存放在内存中,很费内存。游标一建立,就将相关的记录锁住,直到取消游标。游
标提供了对特定集合中逐行扫描的手段,一般使用游标来逐行遍历数据,根据取出数据条
件的不同进行不同的操作。而对于多表和大表中定义的游标(大的数据集合)循环很容易
使程序进入一个漫长的等待甚至死机。
更重要的是,对于非常大的数据模型而言,分页检索时,如果按照传统的每次都加载
整个数据源的方法是非常浪费资源的。现在流行的分页方法一般是检索页面大小的块区的
数据,而非检索所有的数据,然后单步执行当前行。
最早较好地实现这种根据页面大小和页码来提取数据的方法大概就是“俄罗斯存储过
程”。这个存储过程用了游标,由于游标的局限性,所以这个方法并没有得到大家的普遍认
可。
后来,网上有人改造了此存储过程,下面的存储过程就是结合我们的办公自动化实例
写的分页存储过程:
CREATE procedure pagination1
(@pagesize int, --页面大小,如每页存储 20 条记录
@pageindex int --当前页码
)
as
set nocount on
begin
declare @indextable table(id int identity(1,1),nid int) --定义表变量
declare @PageLowerBound int --定义此页的底码
declare @PageUpperBound int --定义此页的顶码
set @PageLowerBound=(@pageindex-1)*@pagesize
1
评论3
最新资源