--在Sql查詢分析器中執行一下腳本建立存儲過程p_splitpage
create procedure p_splitpage
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_splitpage]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[p_splitpage]
GO
--利用SQL未公開的存儲過程實現分頁
create procedure p_splitpage
@sql nvarchar(4000), --要執行的sql語句
@currentpage int=2, --要顯示的頁碼
@pagesize int=10, --每頁的大小
@pagecount int=0 out --總頁數
as
set nocount on
declare @p1 int
exec sp_cursoropen @p1 output,@sql,@scrollopt=1,@ccopt=1,@rowcount=@pagecount output
select @pagecount=ceiling(1.0*@pagecount/@pagesize)
,@currentpage=(@currentpage-1)*@pagesize+1
select @currentpage
exec sp_cursorfetch @p1,16,@currentpage,@pagesize
exec sp_cursorclose @p1
go
--然后在程序中就可以用以下方式調用,具體的參數請參見上面的腳本
exec p_splitpage 'select top 1000 id,name from sysobjects',2
---------------------------得到執行的查詢語句的存儲過程-----------------
CREATE PROCEDURE dtalyjd_search (@search_name varchar(50)) AS
DECLARE @str varchar(4000)
if @search_name=''
begin
set @str='select * from 表名'
select @str sql
return
end
else
begin
set @str='select * from 表名 where
search_name like ''%'+@search_name+'%'''
select @str sql
return
end
GO
ASP頁面
以下是代碼片段: <% dim search_name search_name=trim(request("search_name")) set rs1=conn.execute("exec dtalyjd_search '"&search_name&"'") sql=rs1("sql") rs1.close if request("page")="" or request("page")=0 or IsNumeric(request("page"))=false then m_page=1 else m_page=cint(request("page")) end if m_pagesize=14'每頁的條數 set cmd = server.CreateObject("adodb.command") cmd.ActiveConnection = conn cmd.CommandType = 4 cmd.CommandText = "p_SplitPage" cmd.Parameters.Append cmd.CreateParameter("@sql",8,1, 4000, sql) cmd.Parameters.Append cmd.CreateParameter("@page",4,1, 4, m_page) cmd.Parameters.Append cmd.CreateParameter("@pageSize",4,1, 4, m_pageSize) cmd.Parameters.Append cmd.CreateParameter("@pageCount",4,2, 4, m_pageCount) cmd.Parameters.Append cmd.CreateParameter("@recordCount",4,2, 4, m_recordCount) set rs = cmd.Execute set rs = rs.NextRecordSet m_pageCount = cmd.Parameters("@pageCount").value m_recordCount = cmd.Parameters("@recordCount").value if m_pageCount = 0 then m_pageCount = 1 if m_page>m_pageCount then response.Redirect("bureauser_result.asp?page="&m_pageCount&"&lxsuser_name="&lxsuser_name) end if set rs = cmd.Execute %> <table width="100%" border="0" cellspacing="1" cellpadding="0"> <tr> <td width="47%" align="right">查詢結果共 <font color="#FF0000">[8]</font>頁 這是第 <font color="#FF0000">[5]</font> 頁</td> <td width="53%" align="right"> <table width="95%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="10" align="right" ><img src="feedback_images/ll.gif" width="8" height="21"></td> <td width="475" background="feedback_images/m.gif"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <% if m_page<>1 then %> <td width="23%"><img src="images/first.gif" width="8" height="8"> <A HREF=<%=Myself%>?Page=1&search_name=<%=search_name%>>首頁</A></td> <td width="31%"><img src="images/pre.gif" width="8" height="8"> <A HREF=<%=Myself%>?Page=<%=(Page-1)%>&search_name=<%=search_name%>>上一頁</a></td> <% end if If m_page <> m_pageCount Then %> <td width="24%"><img src="images/lat.gif" width="8" height="8"><A HREF=<%=Myself%>?Page=<%=(m_Page+1)%>&search_name=<%=search_name%>>下一頁</A></td> <td width="22%"><img src="images/last.gif" width="8" height="8"><A HREF=<%=Myself%>?Page=<%=m_pageCount%>&search_name=<%=search_name%>>尾頁</A></td> <%end if%> </tr><%end if%> </table></td> <td width="11"><img src="feedback_images/rr.gif" width="10" height="21"></td> </tr> </table> </td> </tr> </table> |