ASP开发中存储过程应用全接触(7)



/*SP6*/  
CREATE PROCEDURE dbo.getUserList  
@iPageCount int OUTPUT, --总页数  
@iPage int, --当前页号  
@iPageSize int --每页记录数  
as  
set nocount on  
begin  
--创建临时表  
create table #t (ID int IDENTITY, --自增字段  
userid int,  
username varchar(40))  
--向临时表中写入数据  
insert into #t  
select userid,username from dbo.[UserInfo]  
order by userid  

--取得记录总数  
declare @iRecordCount int  
set @iRecordCount = rowcount  

--确定总页数  
IF @iRecordCount%@iPageSize=0  
SET @iPageCount=CEILING(@iRecordCount/@iPageSize)  
ELSE  
SET @iPageCount=CEILING(@iRecordCount/@iPageSize)+1  

--若请求的页号大于总页数,则显示最后一页  
IF @iPage > @iPageCount  
SELECT @iPage = @iPageCount  

--确定当前页的始末记录  
DECLARE @iStart int --start record  
DECLARE @iEnd int --end record  
SELECT @iStart = (@iPage - 1) * @iPageSize  
SELECT @iEnd = @iStart + @iPageSize + 1  

--取当前页记录  
select * from #t where ID> @iStart and ID <@iEnd  

--删除临时表  
DROP TABLE #t  

--返回记录总数  
return @iRecordCount  
end  
go  
  在上面的存储过程中,输入当前页号及每页记录数,返回当前页的记录集,总页数及记录总数。为了更具典型性,将记
录总数以返回值的形式返回。以下是调用该存储过程的ASP代码(具体的分页操作略去):  

'**调用分页存储过程**  
DIM pagenow,pagesize,pagecount,recordcount  
DIM MyComm,MyRst  
pagenow = Request("pn")  
'自定义函数用于验证自然数  
if CheckNar(pagenow) = false then pagenow = 1  
pagesize = 20  
Set MyComm = Server.CreateObject("ADODB.Command")  
with MyComm  
.ActiveConnection = MyConStr 'MyConStr是数据库连接字串  
.CommandText = "getUserList" '指定存储过程名  
.CommandType = 4 '表明这是一个存储过程  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/3526.html