说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

存储过程分页有点问题,谁帮我看一下

编辑:说三道四文库 发布时间:2017-11-18 03:24
HTML文档下载 WORD文档下载 PDF文档下载
存储过程分页有点问题,谁帮我看一下
发贴心情
存储过程分页用asp来实现的,请实例帖出来,谢谢
存储过程我写好了
但是用asp不能完整实现,请帮我看一下哪错了
具体情况:
分页可以了

主要问题
"因为我加了keyword,当返回0记录时出错超出总页数时出错请问怎么办"

具体代码如下
存储过程:

--//音乐列表存储过程
--//三个参数
--//    @KeyWord:关键字
CREATE            PROCEDURE PROC_MusicList
@iPageNo int,
@iPageSize int,
@KeyWord nvarchar(30)
--WITH ENCRYPTION
AS

-- 定义局部变量 
declare @intBeginID int
declare @intEndID int
declare @intAllRecordCount int
declare @intPageCount int
declare @intRowCount int

Begin

--/*-- 关闭计数 --*/
Set nocount on

--//    取得音乐总条数
select @intAllRecordCount = count(MusicID) from Music_MusicList where(MusicName like ''%''+@KeyWord+''%'')
if (@intAllRecordCount = 0)
Return 0

--//    判断页数是否正确
if (@iPageNo-1)*@iPageSize>@intAllRecordCount
Return 0

--//    求开始的音乐记录ID号
set @intRowCount = (@iPageNo-1)*@iPageSize+1

--//    限制页页条数
set rowcount @intRowCount
select @intBeginID = MusicID FROM Music_MusicList where(MusicName like ''%''+@KeyWord+''%'') order by MusicID Desc


--//    求结束的音乐记录ID号
set @intRowCount=@iPageNo*@iPageSize
--//    限制页页条数
set rowcount @intRowCount
select @intEndID = MusicID FROM Music_MusicList where(MusicName like ''%''+@KeyWord+''%'') order by MusicID Desc

--//    恢复系统变量
set rowcount 0
set nocount off

select a.MusicID,a.MusicName, a.IsGood, a.Hits, a.IsCheck, a.IssueTime,a.ClassID, a.SongerID, a.SpecialID,b.songername From Music_MusicList as a,(select id as SongerID2,songername from MusicSonger) as b
where (a.SongerID = b.SongerID2) and (a.MusicName like ''%''+@KeyWord+''%'') and (a.MusicID between @intEndID and @intBeginID)
ORDER BY a.IssueTime DESC
return(@@rowcount)
End
GO


asp代码:

<form name="form1" method="get" action="<%=Request.ServerVariables("URL")%>">
        <table width="290" border="0" cellspacing="2" cellpadding="2">
          <tr align="center"> 
            <td>关键字</td>
            <td><input name="KeyWord" type="text" class="submitstyle" id="KeyWord"></td>
            <td><input type="submit" name="Submit" value="搜索"></td>
          </tr>
        </table>
      </form>      <table width="98%" border="1" cellpadding="0" cellspacing="0" bordercolor="#000000">
        <tr align="center" bgcolor="#efefef"> 
          <td height="30">序号</td>
          <td>歌曲名称</td>
          <td>歌手</td>
          <td>更新日期</td>
          <td>加入列表</td>
          <td>推荐</td>
          <td>管理</td>
        </tr><%
Page = Request("Page")
if Page="" or not IsNumerIC(Page) or Page<1 then
Page = 1
else
Page = Cint(Page)
end if
PageSize = 10
Set Str = server.createobject("AdpostSub.AspSub")
KeyWord = Trim(Request.QueryString("KeyWord"))
If KeyWord<>"" then
KeyWord = Str.HTMLEncode(KeyWord)
else
KeyWord = ""
end if
Set Str = nothing
set Db = Server.CreateObject("AdpostDb.AspDbClass")
set cmd=server.CreateObject("adodb.command")
Set Rs = Server.CreateObject("ADODB.RecordSet")
''Rs.CursorLocation = 3
set cmd.ActiveConnection=Db.Conn
cmd.CommandText = "PROC_MusicList"
''cmd.CommandType =adCmdStoredProc
cmd.CommandType = &H0004
cmd.Parameters.Append cmd.CreateParameter("@iPageNo",3,1,4,Page)
cmd.Parameters.Append cmd.CreateParameter("@iPageSize",3,1,4,PageSize)
cmd.Parameters.Append cmd.CreateParameter("@KeyWord",200,1,30,KeyWord)
''cmd.Parameters.Append cmd.CreateParameter("@RETURN_value",3,4)
Set Rs = cmd.Execute()
''response.write cmd("@RETURN_value")
if Rs.eof then
%><tr align="center"> 
          <td height="59" colspan="7">暂无歌曲</td>
        </tr>
<%
else
Do while not Rs.eof
%>
        <tr align="center"> 
          <td height="25"><%=Rs("MusicID")%></td>
          <td><%=Rs("MusicName")%></td>
          <td><%=Rs("songername")%></td>
          <td><%=FormatDateTime(Rs("IssueTime"),2)%></td>
          <td><%
          if Rs("IsCheck") then
              Response.Write("<a href=""Do_Music.asp?Action=CannelCheck&SpecialID="&Rs("SpecialID")&"&MusicID="&Rs("MusicID")&""" title=""撤消列表"">撤消列表</a>")
          else
              Response.Write("<a href=""Do_Music.asp?Action=SetCheck&SpecialID="&Rs("SpecialID")&"&MusicID="&Rs("MusicID")&""" title=""加入列表""><font color=""red"">加入列表</font></a>")
          end if
          %></td>
          <td><%
          if Rs("IsGood") then
              Response.Write("<a href=""Do_Music.asp?Action=CannelIsGood&MusicID="&Rs("MusicID")&""" title=""取消推荐""><font color=""red"">取消推荐</font></a>")
          else
              Response.Write("<a href=""Do_Music.asp?Action=SetIsGood&MusicID="&Rs("MusicID")&""" title=""加入推荐"">加入推荐</a>")
          end if
          %></td>
          <td><a href="ModifyMusic.asp?MusicID=<%=Rs("MusicID")%>" title="修改">修改</a><a href="Do_Music.asp?Action=Delete&SpecialID=<%=Rs("SpecialID")%>&MusicID=<%=Rs("MusicID")%>" title="删除">删除</a></td>
        </tr><%
        Rs.MoveNext
Loop
        end if
        %>
      </table>
      <table>
      <tr>
          <td>当前是第<%=Page%>页 <%=PageSize%>条/页 <a href="admin_song.asp?Page=1">首页</a> <a href="admin_song.asp?Page=<%=Page-1%>">前页</a> <a href="admin_song.asp?Page=<%=Page+1%>">后页</a></td>
      </tr>
      </table><%
    Set Rs = nothing
    Set cmd = nothing
    set Db = nothing
%> </td>
  </tr>
</table>
你的代码我看得头都痛了,请你先看这篇文章吧:
---------------------------------------------
存储过程分页
if exists(select * from sysobjects where ID = object_id("up_TopicList"))
   drop proc up_TopicList
go
create proc up_TopicList 
            @a_ForumID int , @a_intDays int , @a_intPageNo int , @a_intPageSize tinyint
   as
       declare @m_intRecordNumber int
       declare @m_intStartRecord  int
       select @m_intRecordNumber = @a_intPageSize * @a_intPageNo
       select @m_intStartRecord = @a_intPageSize * (@a_intPageNo - 1) + 1
       if @a_intDays = 0                      --如果不限定天数
          begin
                /*求符合条件记录数*/
                select "RecordCount" = count(*)                         
                       from BBS where Layer=1 and ForumID = @a_ForumID 
               /*输出纪录*/ /*首先定义可滚动光标*/
               set rowcount @m_intRecordNumber
               declare m_curTemp Scroll cursor 
                       for
                          select a.ID ,a.Title , d.UserName , a.FaceID ,
                                'ContentSize' = datalength(a.Content) , 
                                'TotalChilds' = (select sum(TotalChilds) 
                                                        from BBS as b 
                                                        where a.RootID = b.RootID) 
                                'LastReplyTime' = (select max(PostTime) 
                                                          from BBS as c 
                                                          where a.RootID = c.RootID)
                                from BBS as a 
                                     join BBSUser as d on a.UserID = d.ID 
                                where Layer=1 and ForumID = @a_ForumID 
                                order by RootID desc , Layer , PostTime
               open m_curTemp
               fetch absolute @m_intStartRecord from m_curTemp
               while  @@fetch_status = 0 
                      fetch next from m_curTemp
               set rowcount 0 
               /*清场*/       
               CLOSE m_curTemp
               DEALLOCATE m_curTemp
          end                      
       else                                --如果限定天数          
          begin
                /*求符合条件记录数*/
                select "RecordCount" = count(*)                         
                       from BBS where Layer=1 and ForumID = @a_ForumID 
                            and dateadd(day , @a_intDays , PostTime) > getdate() 
              <!--插入以上绿色代码部分-->                                                
注:若在asp中调用存储过程的command对象为cm,则set rs=cm.execute,然后用set rs=rs.nextrecordset取下一条记录。 
CTO如何避免决策失控(三):从CEO角度看CTO的应对能力 IT界需求最旺的16项技能 PMC发布8系列RAID卡 找准国内互联网企业需求 早Google一步,eBay数据中心率先搭载了火星上使用的技术 目标专利2000,技术研发人员占55%,斐讯的厚积薄发 SwiftStack CEO:分布式存储的未来 触控陈昊芝:“好声音”标王对移动游戏未来的预测 Office将更强大:微软正开发Office Reader和Office Lens 百度技术专家详解Clouda 并称计划推出相应UI解决方案 少年才俊:看IT界8个不到20岁的科技公司创始人 Oracle与Freescale展开深度合作,Java或将一统物联网? 探秘Google新搜索引擎算法Hummingbird的16个疑惑 如何在开发项目里进行自我激励! 或许很受用:苹果、谷歌和亚马逊等公司的14个怪异面试题 12款不容错过的新款jQuery插件 技术开发者如何看实时Web App开发框架? 高薪技术排行:大数据居首,苹果相关次之,Java、C等相去甚远 谷歌开发网络跟踪新技术:AdID将取代第三方Cookie 穿在脚上的苹果?苹果聘用Nike设计主管Ben Shaffer 七款Debug工具推荐:iOS开发必备的调试利器 六年亲历,见证中国大数据技术与应用时代的到来 Mailbox:日支撑过亿信息数据库的性能调优及集群迁移 PayPal前CTO 在美国改变世界的乌克兰犹太人 放弃Bootstrap&amp;amp;Foundation,迎接Semantic UI? 一键分享:iOS版Google+发布SDK InMobi杨娟:中国移动游戏如何挑战全球? Adobe再遭APT攻击:数十G源代码及290万用户信息失窃 程序员,如何在工作中崭露头角? 国内外三个不同领域巨头分享的Redis实战经验及使用场景 这是一场潜在的战争:谷歌与Facebook、苹果在搜索上的博弈 设计新闻类网站需要注意的关键点:移动友好、宽带…… 谁有Ide.sys、cdrom.sys这两个文件和两个文件的原代码啊! 请问: 当J2EE开发C/S模式时,我的C端要不要装J2EE平台啊?(在线等) 局域网中,一些电脑可以PING通局域网内所以电脑的IP,但是网站邻居就是无法查找到? 委托中要求进行参数传递,应该怎样做,谁帮帮我? *>>--谁做过日历以及日历相关-- 如何卸载windows 2003 server,再重新安装windows 2000 server? 请问将Interbase中两个Varchar型字段连接起来的查询语句怎么写? 域名设置问题?? 为什么微波和X光能穿透介质,而波长介于它们之间的可见光恰不能? 生成EXE问题! Transaction Data Module 和 ADO 问题 寻求DOMINO SERVER 得配置资料!如HTTP的配置等等。 怎么创建dll?创建dll时参数应该怎么定义?创建后怎么调用?在哪儿声明? 熟悉ADODB.Stream的大侠看过来! 在WIN32 CONSOLE APPLICATION 建立的程序中为什么不能使用CString 类 数据库恢复的简单问题 谁用过jfreereport或jaxperreport做过报表?各位大哥帮忙呀!!!--就20分了 紧急高分求助:怎么在windows的user control中加一个参数 [求助]怎样让工程加入Data Report ,菜单 工程 里没有添加Data Report 的呀? 倡导成产手机爱好者与自由开发者协会 CPU拨了会不会叫的啊。内存和显卡拨了不会有声音,一定是主板有问题吗? 我的程序都关闭了,可是为什么进程还存在,我用了多线程的? 呼救高手--急:在线等待帮忙--怪异啊! 急!在线等 浏览器关闭事件----急,谢谢 各位大虾帮帮忙!!!必有重谢!!! 求助二维数组排序问题? 那里有Delphi下载啊? 下面的代码总出错 如果指针被阉割掉以后... 哪位提供一点关于开发小型dbms系统的odbc驱动程序的资料啊? 探讨DMBS??? 关于数据库操作一问? ***禁止重复登录?*** cout流的执行方式问题!请高手回答!不胜感激!!! 欢迎广临(API打印)CDC if (know && 高手) 值得讨论 else 有收获的; 在线等候 咋再MS SQL中实现这个查询? 通过ADSI验证用户登录的问题。 寻找控制面板编程方法 怎么判断类是否存在? 能通过网络修改其它机器的IP地址么?请教各位大侠,在线等!!! 求一段代码:如何得到硬盘的物理系列号,可以用来做为本机唯一标识! 在c++builder中怎样控制excel图表(急!!) 请问如何注册控件并调用、???谢谢 delphi连ACCESS怎么连,具体点。 一道有关类的习题 关于FORM使用的问题,请高手帮忙!!!!!!!!!! 有一个问题! ADOCommand 的问题 如何执行资源中的EXE文件!高手帮帮忙! 根据年份和月份得到天数? 英语翻译锦瑟无端五十弦,一弦一柱思华年.庄生梦晓迷蝴蝶,望帝春心托杜鹃.沧海明月珠有泪,蓝田日暧玉生烟.此情可待成追忆,只是当时已惘然.如上请翻译 弹簧测力计是根据在弹簧的0内弹簧受到的压力越大,弹簧的伸长量就越0的原理制成的,弹簧测力计的刻度是0的问题中的0指需要填的空 CASS地籍参数编界址点号问题,怎么设置每个闭合曲线都是从J1、J2、J3、J4开始?比如说第一个闭合曲线的界址点号是J1、J2、J3、J4、J5排列;第二个闭合曲线也是从J1、J2、J3、J4、J5开始,而不是 同一化学反应在不同温度下进行,反应热的数值不同是为什么? 这里的环境没有我家乡的环境优美,英文怎么说? “哀莫大于心死,而人死亦次之”是什么意思?译成白话文 8 9 10题如何解答 把一个石头放入装水的圆形玻璃杯中,水面上升了0.5CM谁没有溢出,已知这个玻璃杯的底面直径是12CM高是8CM,这块石头的体积是多少? 英语翻译1 Usuaiiyl_____at 9:00.But it is 9:30 now,and i am still__________why?Because today is____ 2 Usually l____ih the evening.l am_____formy family because today is mother's Day.3 Usually l _____to my friends.But not today.l am______becausemy 五年级英语的改变句子Alice is peeling the lime with her hands.(划线提问her hands)Tom goes to school by tram.(换种说法,句意不变) 南京“富二代”杀妻案今庭审 死者亲属国际人才交流大会即将开幕 杭州请高质南京军区原副司令:钓鱼岛空域在中国控南京网络谣言第一案:女子发帖勒索公司交通运输部启动Ⅳ级应急响应防抗台风“上海推空气污染气象预报:污染达四级以百度金融中心李佺:打造最受欢迎互联网中央印发通知要求开展“四风”突出问题十八大以来金融体制改革:坚持市场化改新书曝奥巴马曾向幕僚吹嘘:我擅长杀人日空自航空展开幕 蓝色冲击波进行飞行“一分钟先生”? 关于自慰你一定不知辞职去冰岛,听279个陌生人讲自己的祛斑又长斑?教你食疗内调彻底祛斑重点布局十大板块优质股(11.17)马鞍山的吃货们又少一个好去处,又一家2015南宁国际视听展即将隆重举行!侃哥来了:买苹果机是痛双十一后买家秀股评家最看好的4股中期必涨 强烈推冬季吃应季橘子有哪些好处电影十宗“最”,你知道几个?短线回调基本结束!可以加仓啦!
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘