当前位置: 网学 > 编程文档 > ASP > 正文

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

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/06/17
ount
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
  以下是ASP代码:

''**调用返回多个记录集的存储过程**
DIM checklg,UserID,UserName,UserTel,UserMail
DIM MyComm,MyRst
UserID = 1
''checklogin()为自定义函数,判断访问者是否登录
checklg = checklogin()
Set MyComm = Server.CreateObject("ADODB.Command")
with MyComm
 .ActiveConnection = MyConStr ''MyConStr是数据库连接字串
 .CommandText = "getUserInfo" ''指定存储过程名
 .CommandType = 4 ''表明这是一个存储过程
 .Prepared = true ''要求将SQL命令先行编译
 .Parameters.append .CreateParameter("@userid",3,1,4,UserID)
 .Parameters.append .CreateParameter("@checklogin",11,1,1,checklg)
 Set MyRst = .Execute
end with
Set MyComm = Nothing

''从第一个记录集中取值
UserName = MyRst(0)
''从第二个记录集中取值
if not MyRst is Nothing then
 Set MyRst = MyRst.NextRecordset()
 UserTel = MyRst(0)
 UserMail = MyRst(1)
end if
Set MyRst = Nothing
  以上代码中,利用Recordset对象的NextRecordset方法,取得了存储过程返回的多个记录集。

 
  • 上一篇资讯: 发邮件的asp(CDONTS.NewMail)
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号