熬夜写的一个分页存储过程,支持跳页

asp文件:
----------------------------------
'调用和传递参数
allCount=1000000'总数参数
pagecount=allCount/10'每页10条,总页数
if not isempty(request("page")) then
      CurPage=cint(Request("page"))
else
      CurPage=1
end if
if request.Form("go")<>"" then'获取跳转页数
JumpPage=request.Form("go")
CurPage=JumpPage'传给当前页
else
JumpPage=0
end if
if CurPage=pagecount then'最大页数,用于传给最后页参数
maxID=CurPage
else
maxID=0
end if
if request.QueryString("isNext")<>"" then'前页、后页的判断,1为后页,0为前页
isNext=request.QueryString("isNext")
else
isNext=null
end if
'当前页面里的第一条记录的排序字段的值
If request.QueryString("FirstID")<>"" then
FirstID=request.QueryString("FirstID")
else
FirstID=0
end if
'当前页面里的最后一条记录的排序字段的值
If request.QueryString("LastID")<>"" then
LastID=request.QueryString("LastID")
else
LastID=0
end if
PageSize=10
Set comm = Server.CreateObject("ADODB.Command")
comm.CommandText = "LinkPage"    '存储过程名称
comm.CommandType =4
Set comm.ActiveConnection = conn
'定义的变量顺序位置一定要与存储过程定义的变量相同,才能对应地传值。
comm.Parameters.append comm.CreateParameter("@FirstID",3,1,4,FirstID)
comm.Parameters.append comm.CreateParameter("@LastID",3,1,4,LastID)
comm.Parameters.append comm.CreateParameter("@isNext",11,1,1,isNext)
comm.Parameters.append comm.CreateParameter("@allCount",3,1,4,allCount)
comm.Parameters.append comm.CreateParameter("@PageSize",3,1,4,PageSize)
comm.Parameters.append comm.CreateParameter("@CurPage",3,1,4,CurPage)
comm.Parameters.append comm.CreateParameter("@sortid",3,1,4,sortid)
comm.Parameters.append comm.CreateParameter("@pagecount",3,1,4,maxID)
comm.Parameters.append comm.CreateParameter("@JumpPage",3,1,4,JumpPage)

set rs=comm.Execute()

-------------------------------
存储过程:

CREATE PROCEDURE LinkPage  --用于翻页的测试
--需要把排序字段放在第一列

(
  @FirstID int,  --当前页面里的第一条记录的排序字段的值
  @LastID int,  --当前页面里的最后一条记录的排序字段的值
  @isNext bit=null,    --true 1 :下一页;false 0:上一页
  @allCount int,  --返回总记录数
  @pageSize int,  --返回一页的记录数
  @CurPage int,    --页号(第几页)1:第一页;-1最后一页。
  @sortid int,        --获取大类ID
  @pagecount int,  --总页
  @JumpPage int  --跳转页数
  )

AS

if @CurPage=1
--begin
  --统计总记录数
  --select @allCount=count(ProductId) from Product_test
 
  --set @pageSize=10
  --返回第一页的数据
  select top 10 id,qymc,address,zycp,qyjj,name,post,phone,email,a.sortid,a.typeid,b.Typename from YellowPage a,qiang_class_2 b where  a.typeid=b.typeid and a.sortid=@sortid order by id desc
--end

else if @CurPage=@pagecount

select * from  (select top 10 id,qymc,address,zycp,qyjj,name,post,phone,email,a.sortid,a.typeid,b.Typename from YellowPage a,qiang_class_2 b where  a.typeid=b.typeid and a.sortid=@sortid order by id  ) as aa order by id desc

else if @CurPage=@JumpPage

begin
declare @sql nvarchar(1000)
set @sql='select * from (select top 10 * from ( select top '+str(@JumpPage*10)+' id,qymc,address,zycp,qyjj,name,post,phone,email,a.sortid,a.typeid,b.Typename from YellowPage a,qiang_class_2 b where  a.typeid=b.typeid and a.sortid='+str(@sortid)+' order by id desc) as cc order by id ) as dd order by id desc'
exec ( @sql)
end

else

begin
  if @isNext=1
  --翻到下一页
  select top 10 id,qymc,address,zycp,qyjj,name,post,phone,email,a.sortid,a.typeid,b.Typename from YellowPage a,qiang_class_2 b where id < @LastID and a.typeid=b.typeid and a.sortid=@sortid order by id desc

  else
  --翻到上一页
  select * from (select top 10 id,qymc,address,zycp,qyjj,name,post,phone,email,a.sortid,a.typeid,b.Typename from YellowPage a,qiang_class_2 b where  a.typeid=b.typeid and a.sortid=@sortid and id > @FirstID
order by id) as bb order by id desc

end
GO
------------------------------------------------------------
存储过程小知识:
CommandType属性表明请求的类型,取值及说明如下:
      -1  表明CommandText参数的类型无法确定
      1    表明CommandText是一般的命令类型
      2    表明CommandText参数是一个存在的表名称
      4    表明CommandText参数是一个存储过程的名称

在MyComm.CreateParameter("RETURN",2,4)中,各参数的含义如下:
    第一个参数("RETURE")为参数名。参数名可以任意设定,但一般应与存储过程中声明的参数名相同。此处是返回值,我习惯上设为"RETURE";
    第二个参数(2),表明该参数的数据类型,具体的类型代码请参阅ADO参考,以下给出常用的类型代码:
    adBigInt: 20 ;
    adBinary : 128 ;
    adBoolean: 11 ;
    adChar: 129 ;
    adDBTimeStamp: 135 ;
    adEmpty: 0 ;
    adInteger: 3 ;
    adSmallInt: 2 ;
    adTinyInt: 16 ;
    adVarChar: 200 ;
    对于返回值,只能取整形,且-1到-99为保留值;
    第三个参数(4),表明参数的性质,此处4表明这是一个返回值。此参数取值的说明如下:
    0 : 类型无法确定; 1: 输入参数;2: 输入参数;3:输入或输出参数;4: 返回值

最后:

声明输入参数时需要5个参数,声明输出参数时需要4个参数。声明输入参数时5个参数分别为:参数名、参数数据类型、参数类型、数据长度、参数值。声明输出参数时,没有最后一个参数:参数值。
    需要特别注意的是:在声明参数时,顺序一定要与存储过程中定义的顺序相同,而且各参数的数据类型、长度也要与存储过程中定义的相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值