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