我针对我的计数器表,写了一个IP统计的分页存储过程,在返回总记录数时,出现了一点问题,请大家进来看一下...
存储过程:
CREATE PROCEDURE fycounter
@ currentpage int=1,
@ pagesize int=20,
@ px varchar(20),
-- 排序字段.
@ fs varchar(4),
-- 升序还是降序
@ rsnum int output
--总记录数
AS
declare @ sqltemp varchar(1000),@ ffs varchar(4)
select @ rsnum=count(*) from [counter]
--返回记录总数
if @ fs !='asc'
begin
set @ ffs='asc'
set @ fs='desc'
end
else
begin
set @ ffs='desc'
end
if @ px=''
set @ sqltemp='select top' + str(@ pagesize)+ ' *,dbo.f_ipnumber(ip) as ipnumber from [counter] where id in (select top ' + str(@ pagesize)+ ' id from [counter] where id in (select top ' + str(@ pagesize * @ currentpage)+ ' id from [counter] order by last_time desc,ip ) order by last_time asc,ip desc) order by last_time desc,ip'
else
set @ sqltemp='select top' + str(@ pagesize)+ ' *,dbo.f_ipnumber(ip) as ipnumber from [counter] where id in (select top ' + str(@ pagesize)+ ' id from [counter] where id in (select top ' + str(@ pagesize * @ currentpage)+ ' id from [counter] order by ' + @ px + ' ' + @ fs + ') order by ' + @ px + ' ' + @ ffs + ') order by ' + @ px + ' ' + @ fs
exec (@ sqltemp)
GO
asp调用:
Set ObjCom= Server.CreateObject("ADODB.command")
ObjCom.ActiveConnection=conn
ObjCom.CommandText="fycounter"
ObjCom.CommandType=4
set compata=ObjCom.CreateParameter("@ currentpage",3,1)
ObjCom.Parameters.Append compata
ObjCom.Parameters("@ currentpage").Value=currentpage
set compata=ObjCom.CreateParameter("@ pagesize",3,1)
ObjCom.Parameters.Append compata
ObjCom.Parameters("@ pagesize").Value=MaxPerPage
set compata=ObjCom.CreateParameter("@ px",200,1,20)
ObjCom.Parameters.Append compata
ObjCom.Parameters("@ px").Value=px
set compata=ObjCom.CreateParameter("@ fs",200,1,4)
ObjCom.Parameters.Append compata
ObjCom.Parameters("@ fs").Value=fs
set compata=ObjCom.CreateParameter("@ rsnum",3,2)
ObjCom.Parameters.Append compata
'-------------注意看这里-----------------
set rs=ObjCom.execute
totalPut= ObjCom.Parameters("@ rsnum").value
'------------ 到此结束,在这种情况下 totalPut得不到值 --------
set compata=nothing
set ObjCom=nothing
象上面这样,totalPut得不到值,如果改成如下,则totalPut可以得到正确的值,但是这样又得不到数据集,请问大家没有有好的解决办法?
ObjCom.execute
totalPut= ObjCom.Parameters("@ rsnum").value

