您的位置:首頁 > 數據庫 > MSSQL

利用SQL未公開的存儲過程實現分頁

日期:2006-08-18 15:27:57 點擊: 來自: 作者:

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

More..素材圖片 Picture Navigation
MSSQL熱門 Class Hot
MSSQL推薦 Class Commend
版權所有:中國網站資源 2005- 未經授權禁止復制或建立鏡像 This Site Tech:XHTML+DIV+CSS+Javascript
CopyRight ® 2005- www.patiodelivery.com online services. all rights reserved. ICP06016627
Optimized to 1024x768 to Firefox,Netscape,Opera,MS-IE6+.
99视频30精品视频在线观看