用儲存過程實現分頁顯示

2021-04-15 07:32:35 字數 1916 閱讀 1794

在儲存過程裡實現分頁的邏輯,爽是爽,但造成與資料庫耦合和壓力,這是它最明顯的缺點,但是,在某些情況,儲存過程分頁,依然是最有效的選擇。

一下是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,...