很多開始學習編程的朋友們在使用數據庫自定義分頁的時候,會遇到寫不好數據分頁存儲過程的問題。
這裡我就自己的一點經驗和學習心得提供幾種數據庫內分頁的存儲過程和大家分享一下。
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