Sql 數據分頁解決方案

- 中國WEB開發者網絡 (http://www.webasp.net)
-- 技術教程 (http://www.webasp.net/article/)
--- Sql 數據分頁解決方案 (http://www.webasp.net/article/18/17366.htm)
-- 作者:未知
-- 發佈日期: 2005-04-07
很多開始學習編程的朋友們在使用數據庫自定義分頁的時候,會遇到寫不好數據分頁存儲過程的問題。

這裡我就自己的一點經驗和學習心得提供幾種數據庫內分頁的存儲過程和大家分享一下。

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

















當然,除上面的幾種外因該還有很多其他方法。希望大家在以後學習的過程中能過多多交流,大家也好共同進步。


webasp.net