在儲存過程裡實現分頁的邏輯,爽是爽,但造成與資料庫耦合和壓力,這是它最明顯的缺點,但是,在某些情況,儲存過程分頁,依然是最有效的選擇。
一下是sql server中實現的**。
- file: dbo.singletablepager
-- date: 2007-09-29 am 11:09
-- desc: 單錶分頁函式
if exists(select * from sysobjects where name = n'singletablepager' and type = 'fn')
drop function dbo.singletablepager
go create function dbo.singletablepager
(@key varchar(32), --用於分頁的key
@dbtablename varchar(32), --讀取資料的資料表
@fldnames varchar(256), --讀取的字段列表
@whrpattern varchar(512), --where後面的條件列表 (包括where)
@sort varchar(4), --排序方法,只能是desc和asc
@sortpattern varchar(64), --排序的sql**片斷(包括order by)
@pageindex int, --當前頁碼
@pagesize int --每頁多少條資料
) returns varchar(1024)
asbegin
declare @sql varchar(1024)
set @sql = 'select top ' + cast(@pagesize as varchar) + ' ' + @fldnames + ' from ' + @dbtablename + ' '
if @pageindex = 1
set @sql = @sql + @whrpattern
else
begin
if lower(@sort) = 'desc'
begin
if @whrpattern <> ''
set @sql = @sql + @whrpattern + 'and ' + @key + ' < ('
else
set @sql = @sql + 'where ' + @key + ' < ('
set @sql = @sql + 'select min(' + @key + ') from (select top ' + cast((@pageindex - 1) * @pagesize as varchar) + ' ' + @key + ' from ' + @dbtablename + ' ' + @whrpattern + ' ' + @sortpattern + ') as temptable) '
endelse
begin
if @whrpattern <> ''
set @sql = @sql + @whrpattern + 'and ' + @key + ' > ('
else
set @sql = @sql + 'where ' + @key + ' > ('
set @sql = @sql + 'select max(' + @key + ') from (select top ' + cast((@pageindex - 1) * @pagesize as varchar) + ' ' + @key + ' from ' + @dbtablename + ' ' + @whrpattern + ' ' + @sortpattern + ') as temptable) '
endend
set @sql = @sql + @sortpattern
return @sql
endgo
運用例項:
儲存過程示例 用儲存過程分頁
create proc propage pageid int pagesize int asbegin if pageid 1 begin set rowcount pagesize select from test order by id endelse begin declare no1 int...
asp用儲存過程實現快速分頁
asp用儲存過程實現快速分頁 在本地測試速度提公升了不少。已經加在本站的mtv歌曲列表網頁 一 先建立儲存過程p splitpage create procedure p splitpage sql nvarchar 4000 currentpage int 2,pagesize int 10,re...
用儲存過程實現的分頁程式
用儲存過程實現的分頁程式 顯示指定表 檢視 查詢結果的第x頁 對於表中主鍵或標識列的情況,直接從原表取數查詢,其它情況使用臨時表的方法 如果檢視或查詢結果中有主鍵,不推薦此方法 鄒建 2003.09 引用請保留此資訊 呼叫示例 exec p show 地區資料 exec p show 地區資料 5,...