- ''**调用分页存储过程**
- 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 ''表明这是一个存储过程
- .Prepared = true ''要求将SQL命令先行编译 ''返回值(记录总量)
- .Parameters.Append .CreateParameter("RETURN",2,4)
- ''出参(总页数)
- .Parameters.Append .CreateParameter("@iPageCount",3,2)
- ''入参(当前页号)
- .Parameters.append .CreateParameter("@iPage",3,1,4,pagenow)
- ''入参(每页记录数)
- .Parameters.append .CreateParameter("@iPageSize",3,1,4,pagesize)
- Set MyRst = .Execute
- end with
- if MyRst.state = 0 then ''未取到数据,MyRst关闭
- recordcount = -1
- else
- MyRst.close ''注意:若要取得参数值,需先关闭记录集对象
- recordcount = MyComm(0)
- pagecount = MyComm(1)
- if cint(pagenow)> =cint(pagecount) then pagenow=pagecount
- end if
- Set MyComm = Nothing
- ''以下显示记录
- if recordcount = 0 then
- Response.Write "无记录"
- elseif recordcount > 0 then
- MyRst.open
- do until MyRst.EOF
- ......
- loop
- ''以下显示分页信息
- ......
- else ''recordcount=-1
- Response.Write "参数错误"
- end if
对于以上代码,只有一点需要说明:同时返回记录集和参数时,若要取得参数,需先将记录集关闭,使用记录集时再将其打开。
7. 返回多个记录集的存储过程
本文最先介绍的是返回记录集的存储过程。有时候,需要一个存储过程返回多个记录集,在ASP中,如何同时取得这些记录集呢?为了说明这一问题,在userinfo表中增加两个字段:usertel及usermail,并设定只有登录用户可以查看这两项内容。
- /*SP7*/
- CREATE PROCEDURE dbo.getUserInfo
- @userid int,
- @checklogin bit
- as
- set nocount on
- begin
- if @userid is null or @checklogin is null return
- select username
- from dbo.[usrinfo]
- where userid=@userid
- --若为登录用户,取usertel及usermail
- if @checklogin=1
- select usertel,usermail
- from dbo.[userinfo]
- where userid=@userid
- return
- end
- go
以