asp用儲存過程實現快速分頁

2021-04-02 00:43:25 字數 2241 閱讀 3728

asp用儲存過程實現快速分頁

在本地測試速度提公升了不少。已經加在本站的mtv歌曲列表網頁

一、先建立儲存過程p_splitpage  

create procedure p_splitpage  

@sql nvarchar(4000),

@currentpage int=2,

@pagesize int=10,

@recordcount int=0 output,

@pagecount int=0 output

asset nocount on

declare @p1 int

exec sp_cursoropen @p1 output,@sql,@scrollopt=1,@ccopt=1,@rowcount=@pagecount output

set @recordcount=@pagecount

set @pagecount=ceiling(1.0*@pagecount/@pagesize)  

set @currentpage=(@currentpage-1)*@pagesize+1 

select @recordcount recordcount ,@pagecount  pagecount,@currentpage  currentpage

exec sp_cursorfetch @p1,16,@currentpage,@pagesize

exec sp_cursorclose @p1

set nocount off

go二、asp中呼叫的函式

注:sql為要得到記錄集的查詢語句,cur_page為當前頁碼,p_size為每頁記錄數,r_count,p_count分別為儲存過程返回的總記錄數和總頁數。

function getdata(sql,cur_page,p_size,r_count,p_count)

set  rs=server.createobject("adodb.recordset")   

rs.cursortype  =3   

rs.locktype  =3   

rs.cursorlocation  =3   

set  rs.source  =cmd 

rs.open

set rs=rs.nextrecordset

r_count=cmd("@recordcount")

p_count=cmd("@pagecount")

set rs=rs.nextrecordset

set getdata=rs

end function%>

三、在asp中呼叫:

sql="select * from mtv order by id desc"

p_size=30 '這裡設定每頁顯示的記錄數  

cur_page=request("intpage")

set rs=getdata(sql,cur_page,p_size,r_count,p_count)  

if intpage >= p_count then

last=false

end if

rowcount=1

while not rs.eof

%>

顯示內容

<%

rs.movenext 

wend 

%>

<%if rs.pagecount > 0 then%>

共有<%=r_count%>個mtv

當前頁<%=cur_page%>/<%=p_count%>

<%else%>

當前頁0/0

<%end if%>

&page=1">首頁|

<%if pre then%>

&page=<%=intpage -1%>">上頁|

<%end if%>

<%if last then%>

&page=<%=intpage +1%>">下頁 |

<%end if%>

&page=<%=p_count%>">尾頁 | 轉到第

<%

for i = 1 to p_count

if i = intpage then%>

&page=<%=i%>" selected><%=i%>

<%else%>

&page=<%=i%>"><%=i%>

<%

end if

next

%>

用儲存過程實現分頁顯示

在儲存過程裡實現分頁的邏輯,爽是爽,但造成與資料庫耦合和壓力,這是它最明顯的缺點,但是,在某些情況,儲存過程分頁,依然是最有效的選擇。一下是sql server中實現的 file dbo.singletablepager date 2007 09 29 am 11 09 desc 單錶分頁函式 if...

儲存過程示例 用儲存過程分頁

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...

用儲存過程實現的分頁程式

用儲存過程實現的分頁程式 顯示指定表 檢視 查詢結果的第x頁 對於表中主鍵或標識列的情況,直接從原表取數查詢,其它情況使用臨時表的方法 如果檢視或查詢結果中有主鍵,不推薦此方法 鄒建 2003.09 引用請保留此資訊 呼叫示例 exec p show 地區資料 exec p show 地區資料 5,...