• 全部
  • 基础类
  • 应用实例
  • 新技术前沿

大家快来看看,为什么会出这样的怪问题(关于存储过程的)?????

springcloud 2002-12-31 01:59:41
存储过程代码:
-------------------------------------------
CREATE PROCEDURE proc_search5
@Page INT,
@PageSize INT,
@PageCount INT OUTPUT,
@RecordCount INT OUTPUT
AS
DECLARE @Total INT
DECLARE @ROWNO INT
DECLARE @MAXID INT
DECLARE @MINID INT

SET NOCOUNT ON
SET @PageCount=0
SET @RecordCount=0

SELECT @Total=COUNT(*) FROM ic_newStock,ic_Userinfo WHERE ic_newStock.Userid=ic_Userinfo.Userid
SET @PageCount=CEILING(CAST(@Total AS float)/@PageSize)
SET @RecordCount=@Total
IF @Total<1 OR @Page*@PageSize>@Total
RETURN @@ERROR

--SET @ROWNO=@Page*@PageSize
SET @ROWNO=(@Page-1)*@PageSize+1
SET ROWCOUNT @ROWNO
SELECT @MAXID=Infoid FROM ic_newStock,ic_Userinfo WHERE ic_newStock.Userid=ic_Userinfo.Userid ORDER BY Updtime DESC

SET @ROWNO=@Page*@PageSize
--SET @ROWNO=(@Page-1)*@PageSize+1
SET ROWCOUNT @ROWNO
SELECT @MINID=Infoid FROM ic_newStock,ic_Userinfo WHERE ic_newStock.Userid=ic_Userinfo.Userid ORDER BY Updtime DESC

SET ROWCOUNT 0
SELECT ic_newStock.Userid,Infoid,Cname,Tel,Model,Company,Encapsulation,Sno,Num,Price,Updtime,Note FROM ic_newStock,ic_Userinfo WHERE ic_newStock.Userid=ic_Userinfo.Userid AND Infoid>=@MINID AND Infoid<=@MAXID ORDER BY Updtime DESC
RETURN @@ERROR
-------------------------------------------
ASP调用代码:
-------------------------------------------
<%
PageSize=50
Page=trim(Request.QueryString("thePage"))
If Page="" Or IsEmpty(Page) Then Page="1"
Page=CLng(Page)
If Page<1 Then Page=1
Set rs=Server.CreateObject("ADODB.Recordset") '建立记录集对象
Set cmd=Server.CreateObject("ADODB.Command") '建立命令对象
cmd.CommandText="proc_search5" '存储过程名称
cmd.CommandType=4
Set cmd.ActiveConnection=Conn '数据库连接对象
cmd.Parameters.Append cmd.CreateParameter("@Page",3,1,,Page)
cmd.Parameters.Append cmd.CreateParameter("@PageSize",3,1,,PageSize)
cmd.Parameters.Append cmd.CreateParameter("@PageCount",3,2)
cmd.Parameters.Append cmd.CreateParameter("@RecordCount",3,2)
cmd.Execute
ReturnVal=cmd.Parameters(0)
PageCount=cmd.Parameters("@PageCount")
RecordCount=cmd.Parameters("@RecordCount")

If RecordCount>0 Then
set rs=cmd.Execute()
'...以下是显示语句
End If
%>
-------------------------------------------
出现的怪问题:
以下是一个结果报告:
-------------------------------------------
共找到1000条信息,当前显示为第201-250条,第5页/共20页,首页 前一页 后一页 末页
-------------------------------------------
当我让其显示第6页(以及后来页)时出错,而显示前5页均可,但是显示第4页时只显示30条记录。
请问这是什么原因?如何解决?
...全文
7 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
springcloud 2003-01-02
问题我自己已解决,只不过不是你们所说的错误!
回复
将PageSize=50改为40,30,60等试一下,看能够找到错误的规律;
检查数据库表ic_newStock,看是否存在不合理数据,重新生成此表,再试。
回复
brook_huang 2003-01-02
可能是数据里有一些特殊字符
回复
cainiao000 2003-01-02
帮您UP一下。
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2002-12-31 01:59
社区公告
暂无公告