论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Asp教程
Tag:入门,文摘,实例,技巧,iis,表单,对象,上传,数据库,记录集,session,cookies,存储过程,注入,分页,安全,优化,xmlhttp,fso,jmail,application,防盗链,stream,组件,md5,乱码,缓存,加密,验证码,算法,ubb,正则表达式,水印,,日志,压缩,url重写,控件,函数,破解,触发器,socket,ADO,初学,聊天室,留言本,视频教程

存储过程及ASP调用存储过程实现分页(四)

文章类别:Asp | 发表日期:2010-2-1 13:38:35

存储过程及ASP调用存储过程实现分页(四)

3、有返回输出参数和记录集的存储过程

经过前面2点的讲解相信你现在对存储过程又有进一步的理解了。这里我就拿我们最常使用的存储过程分页来说这个有返回输出参数和记录集的存储过程。

首先打开SQL 查询分析器,(下面的注解我就没有每条都写了,不清楚可以选中它然后按:Shift+F1或直接按F1 然后再索引里输入你要查询的关键字。)

①存储过程代码:输入:

Use Johnny

Go

/*=======第3个存储过程====

有返回输出参数和记录集的存储过程

有任何问题:QQ:40623660

========================*/

CREATE PROC testPROC3

       @tPageCount int OUTPUT,   --输出参数,总页数

       @tPageSize int,             --每页显示多少条记录

       @tPageNo int        --当前页码

AS

SET NOCOUNT ON

BEGIN

       /*取得总记录条数*/

       DECLARE @tRecordCount int     --总记录条数

       SELECT @tRecordCount=COUNT(tID) FROM testTable

       /*确定总的页数*/

       IF (@tRecordCount % @tPageSize) = 0

              SET @tPageCount=CEILING(@tRecordCount/@tPageSize)     --CEILING函数:返回大于或等于所给数字表达式的最小整数。

       ELSE

              SET @tPageCount=CEILING(@tRecordCount/@tPageSize)+1

       /*如果输入的页码大于总的页数*/

       IF @tPageNo > @tPageCount

              SET @tPageNo = @tPageCount

       /*确定当前页记录的起止标记*/

       DECLARE @tStart int , @tEnd int       --设置起止标志

       SET @tStart=(@tPageNo-1) * @tPageSize

       SET @tEnd =@tStart+@tPageSize+1

       /*由其止标记得到当前页的记录*/

       SELECT * FROM testTable WHERE (tID>@tStart) AND (tID<@tEnd)

       /*我们把总记录做为返回值,这样存储过程就变了有返回值,输出参数和记录集了*/

       RETURN @tRecordCount     --做为返回值

END

选中运行下。

②ASP代码:然后我们就打开Dreamweaver 在你的测试文件夹下新建test3.asp然后输入我们的数据库连接字符串(存储过程1调用的红色部分),再输入下面代码:

url="?"    '或:文件名.asp?

StartTime = Timer

dim cmd,PageNo,tPageCount,tPageSize,tRecordCount

PageNo=Cint(Trim(request("PageNo")))      '输入参数

if PageNo="" or PageNo<=0 then PageNo=1

tPageSize=10

set cmd = Server.CreateObject("ADODB.Command")

cmd.ActiveConnection = connstr

cmd.CommandText = "dbo.testPROC3"

cmd.CommandType = 4

cmd.CommandTimeout = 0

cmd.Prepared = true

cmd.Parameters.Append cmd.CreateParameter("@tRecordCount", 3, 4)

cmd.Parameters.Append cmd.CreateParameter("@tPageCount", 3, 2)

cmd.Parameters.Append cmd.CreateParameter("@tPageSize", 3, 1,10,tPageSize)

cmd.Parameters.Append cmd.CreateParameter("@PageNo", 3, 1,10,PageNo)

set rs=cmd.Execute()

rs.close() '注意:若要取得参数值,需先关闭记录集对象,要使用的时候再打开

'返回值

tRecordCount=cmd(0)  

'输出参数

tPageCount=cmd(1)      '或tPageCount =cmd("@tPageCount ")或tPageCount =cmd.Parameters(1) 其参数顺序时从0开始。

IF PageNo>=tPageCount THEN PageNo=tPageCount

set cmd=nothing

'显示记录

IF tRecordCount=0 THEN

response.Write("没有记录!")

response.End()

else

rs.open()

while not rs.eof

response.Write("<li>"&rs("tID")&"|"&rs("tUserName")&"|"&rs("tTel")&"</li><hr />"&VbCrlf)

rs.movenext

wend

'========下面是分页======

if PageNo<=1 then

   Response.Write "<font color='#FF0000'>[首页] [上一页]</font>"

else

   Response.Write"[<a href='"&url&"PageNo=1' target='_self' title='首页'><font color='#FF0000'>首页</font></a>] "

   Response.Write" [<a href='"&url&"PageNo="&(PageNo-1)&"' target='_self' title='上一页 '><font color='#FF0000'>上一页</font></a>] "

end if

if PageNo>=tPageCount then

    Response.Write "<font color='#FF0000'>[下一页] [尾页]</font>"

else

    Response.Write" [<a href='"&url&"PageNo="&(PageNo+1)&"' target='_self' title='下一页 '><font color='#FF0000'>下一页</font></a>] "

    Response.Write" [<a href='"&url&"PageNo="&tPageCount&"' target='_self' title='尾页 '><font color='#FF0000'>尾页</font></a>]"

end if

Response.Write("[页次 第<font color=red>"&PageNo&"</font>页/共<font color=red>" & tPageCount &"</font>页]")

Response.Write("[共<font color=red >"&tRecordCount&"</font>条 <font color=red>"& tPageSize & "</font>条/页]")

Response.Write(" 转到" & "<input id=goto name=goto size=""6"" maxsize=""10"" value="& PageNo&" onKeyDown=""if(event.keyCode==13) {window.location.href='"&url&"pageNo='+this.value; return false;}"" onkeyup=""value=value.replace(/[^\d]/g,'') "" onbeforepaste=""clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"" />" & "页<input type=submit value=""Go"" onclick= ""gotoPage()"" />")

Response.Write("</td></tr></table>")

Response.Write("<script>function gotoPage(){var pg=document.getElementById('goto'). value;if(isNaN(pg)||pg>"&tPageCount&"||pg<0){window.alert('请正确输入页码,只能为正整数!且不能大于"&tPageCount&"');return false;}else {window.location.href='"&url&"PageNo='+document.getElementById('goto').value+'';return true;}}</script>")

rs.close()

EndTime = Timer

response.Write(" 所用时间:【"&FormatNumber((EndTime - StartTime),5,true)&"秒】<br />")

end if

这个页面的代码有点多,直接COPY下,保存下。

按下F12 看看效果吧:

注意:在这种有参数和记录集的情况下,若要取得参数值,需先关闭记录集对象,要使用的时候再打开。

视频教程列表
文章教程搜索
 
Asp推荐教程
Asp热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058