转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> Sql Server >> 正文
sql server 存储过程分页(原创)         

sql server 存储过程分页(原创)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:965 更新时间:2007/11/14 12:04:00

CREATE PROCEDURE [dbo].[Select_page_data_allow_fields_cond]
@allow_fields varchar(100) =" * ",
@DefRecordNum int =20,
@PageNo int =1,
@Where varchar(500) = null
AS
declare @R_end int
declare @S_sql varchar(500)
declare @condition varchar(500)
declare @condition2 varchar(500)


--if rtrim(@Where)!=""
--if rtrim(@Where)!=""

SET @r_end=(@PageNo-1)*@DefRecordNum+1

--正则页码
IF ( CAST(@r_end AS INT)<1)
 SET @r_end = 1

SET @Where=rtrim(@Where)
--if not (@Where is null )
if  (@Where <>'''''''' )
 SET @S_sql="SELECT TOP "+CAST(@DefRecordNum AS CHAR(4)) +space(2)+@allow_fields+"  FROM BBSReply WHERE id>=(SELECT MAX(ID) AS r_begin FROM (SELECT TOP "+CAST(@R_end AS CHAR(5))+" ID FROM BBSReply WHERE "+@Where+" ORDER BY ID) airzen)  AND "+@Where+"  order by id"
ELSE
 SET @S_sql="SELECT TOP "+CAST(@DefRecordNum AS CHAR(4)) +space(2)+@allow_fields+"  FROM BBSReply WHERE id>=(SELECT MAX(ID) AS r_begin FROM (SELECT TOP "+CAST(@R_end AS CHAR(5))+" ID FROM BBSReply  ORDER BY ID) airzen)  order by id"

--PRINT @S_sql
EXEC(@S_sql)
GO

 

---------------------------------------------------

<%
''''********************************************************************
''''本程序由AIRZEN 2004/5/12 更新修定。
''''===================================================================
Option Explicit
''''Response.Flush
Dim BeginTime,EndTime
BeginTime=Timer
Dim conn,SQLstr,Rs,DefRecordNum,CursorBegin,CursorEnd,CurPageNum,hav
DefRecordNum=20
dim R_end
''''--------------获取相关参数----------
If Request("CurPageNum")<>"" Then
CurPageNum=CLng(Request("CurPageNum"))
If CurPageNum<=0 Then CurPageNum=1
Else
CurPageNum=1
End If

 

''''----------------End-----------------
''''------------显示翻页内容函数--------
Function TurnPageFS(DispRecordNum)
Dim n
While Not(Rs.Eof) And n<DispRecordNum
n=n+1
Response.Write "<tr>"&_
"<td bgcolor=''''efefef''''>"&n&"</td>"&_
"<td bgcolor=''''efefef''''>"&Rs(0)&"</td>"&_
"<td bgcolor=''''efefef''''>"&Rs(1)&"</td>"&_
"<td bgcolor=''''efefef''''>"&Rs(2)&"</td>"&_
"<td bgcolor=''''efefef''''>"&Rs(3)&"</td>"&_
"<td bgcolor=''''efefef''''>"&Rs(4)&"</td>"&_
"<td bgcolor=''''efefef''''>"&Rs(5)&"</td>"&_
"</tr>"
If n=1 Then CursorBegin=Rs(0)
If n=DefRecordNum Or Rs.Eof Then CursorEnd=Rs(0)
Rs.MoveNext
Wend
End Function
''''-------------连接数据库-------------
Set conn=Server.CreateObject("Adodb.Connection")
''''SQLstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.Mappath("mldata.mdb")
SQLstr="provider=SQLOLEDB;server=(local);database=XX;uid=XX;pwd=XX;"
conn.Open SQLstr
Dim TotalRecords,TotalPages

TotalPages=clng(request.QueryString("TotalPages"))

''''//判断有无接收的页码
if TotalPages=0 or not isnumeric(TotalPages)  then ''''//无接收页码

SQLstr="Select count(ID) As RecordSum From BBSreply WHERE userid=''''airzen''''"    ''''//此条件应与下面的存储过程条件保持一持
Set Rs=conn.Execute(SQLstr,0,1)
TotalRecords=Rs("RecordSum")
TotalPages=Abs(Int(TotalRecords/DefRecordNum*(-1)))
Rs.Close
Set Rs=Nothing

end if
dim allow_fields
''''//允许控制选择的字段以最优化的SQL 语句执行,
''''//allow_fields :允许的字段
''''//DefRecordNum :每页显示的记录数目
''''//CurPageNum :当前页码
allow_fields="[*]"
if  TotalPages<1  then  TotalPages=1
SQLstr="Select_page_data_allow_fields_cond "&allow_fields&","&DefRecordNum&","&CurPageNum&",[userid=''''airzen'''']"   

 ''''//此处的条件应与上面的保持一致
''''//SQLstr="Select_page_data_allow_fields_cond "&allow_fields&","&DefRecordNum&","&CurPageNum&",[  id=1449236]"
response.write "<br>"&SQLstr
Set Rs=conn.Execute(SQLstr)

%>
<html>
<head>
<title>(airzen  2004/05/13 Version of Procedure)</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css">td,br,div,p,body {font-size:12px}</style>
</head>
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0">
<table width="100%" border="0" cellspacing="0" cellpadding="3" bgcolor="#E2F5FE">
<tr align="center">
<td colspan="2"><%Response.Write CurPageNum&"/"&TotalPages&"页 总记录数:"&TotalRecords%></td>
    <td>首页</a> <a href="?CurPageNum=<%=CurPageNum-1%>">上一页</a></a>
      <a href="?CurPageNum=<%=CurPageNum+1%>">下一页</a></a> </td>
</tr>
</table>
<table width="100%" border="1" cellspacing="0" cellpadding="3" bgcolor="#CCCCCC">
<tr>
<td>ID</td>
<td>Title</td>
<td>FileName</td>
<td>大小</td>
<td>尺寸</td>
<td>类别</td>
</tr>
<%
TurnPageFS(DefRecordNum)
Rs.Close
Set Rs=Nothing
conn.Close
Set conn=Nothing
%>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="3" bgcolor="#E2F5FE">
<tr align="center">
<td colspan="2"><%Response.Write CurPageNum&"/"&TotalPages&"页 总记录数:"&TotalRecords%></td>
    <td><a href="?TotalPages=<%=TotalPages%>">首页</a></a>
      <a href="?TotalPages=<%=TotalPages%>&CurPageNum=<%=CurPageNum-1%>">上一页</a></a>
      <a href="?TotalPages=<%=TotalPages%>&CurPageNum=<%=CurPageNum+1%>">下一页</a></a>
      <a href="?TotalPages=<%=TotalPages%>&CurPageNum=<%=TotalPages%>">末页</a></td>
</tr>
</table>
<p class="unnamed1">
  <%
EndTime=Timer
Response.Write "<br>程序执行时间:"&(EndTime-BeginTime)*1000&"毫秒"
Response.Write "  第一条记录的ID值(CursorBegin)="&CursorBegin&"  "
Response.Write "最后一条记录的ID值(CursorEnd)="&CursorEnd&"<br><br>"
%>
</p>

<p>&nbsp;</p>
</body>
</html>

 

作者的话:

本程序思路用到存储过程,

ASP页面中加入传递参数TotalPages 第一页运行时将会多做一次获取总页数的运算,在以后的页面中将会用参数传递。这样将节省一些时间。


[Access]sql随机抽取记录  [Access]ASP&SQL让select查询结果随机排序的实现方法
[聊天工具]企业邮件系统的利器----FoxMail Server  [系统软件]OPEN SERVER 5.0.5安装EXP300阵列柜
[系统软件]SQL语句性能优化--LECCO SQL Expert  [系统软件]关于Windows2000Server的灾难恢复
[常用软件][网络]下载服务革命性风暴Poco Server评测  [C语言系列]动态创建SQL Server数据库、表、存储过程等架构信…
[C语言系列]SQL Server到DB2连接服务器的实现  [C语言系列]SQL Server到SYBASE连接服务器的实现
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台