Sql 数据分页解决方案

王朝c#·作者佚名  2006-12-17
窄屏简体版  字體: |||超大  

很多开始学习编程的朋友们在使用数据库自定义分页的时候,会遇到写不好数据分页存储过程的问题。

这里我就自己的一点经验和学习心得提供几种数据库内分页的存储过程和大家分享一下。

1、 使用top

1.1利用当前记录号(currentnote)和分页页面大小(pagesize)进行分页

create proc GetNextPageInfo2

@pagesize int, --page size

@currentnote int --current note

As

declare @sql nvarchar(200)

set @sql=N'select top '+convert(varchar(10),@pagesize)+

' * from dbo.Userinfo where userid > ' + convert(varchar(10),@currentnote)

exec sp_executesql @sql

go

1.2利用本页页码和分页页面大小进行分页

create proc GetNextPageInfo

@pagesize int, --page size

@page int --CurrentPage NO

As

declare @jilu bigint

set @jilu=(@pagesize*@page)

declare @sql nvarchar(200)

set @sql=N'select top '+convert(varchar(10),@pagesize)+

' * from dbo.Userinfo where userid not in (select top ' + convert(varchar(10),@jilu) +

' userid from Userinfo order by userid) order by userid'

exec sp_executesql @sql

go

两种方式比较:第一种执行效率应该高于第二种,不过再id号多变的情况下第二种方法使用起来相对简单。

2、 使用rowcount

3、 2.1利用当前记录号(currentnote)和分页页面大小(pagesize)进行分页

create proc GetNextPageInfo3

@pagesize int, ----分页大小

@currentnote int ----当前页最后一条记录号

as

set rowcount @pagesize

select * from userinfo where userid>@currentnote

当然,除上面的几种外因该还有很多其他方法。希望大家在以后学习的过程中能过多多交流,大家也好共同进步。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航