在ASP中,一样平常经由过程command工具挪用存储历程,依据分歧情形,本文也先容别的挪用办法。为了便利申明,依据存储历程的输出输入,作以下复杂分类: 1.只前往单一纪录集的存储历程 假定有以下存储历程(本文的目标不在于报告T-SQL语法,以是存储历程只给出代码,不作申明):
/*SP1*/
CREATEPROCEDUREdbo.getUserList
as
setnocounton
begin
select*fromdbo.[userinfo]
end
go
以上存储历程获得userinfo表中的一切纪录,前往一个纪录集。经由过程command工具挪用该存储历程的ASP代码以下:
2.没有输出输入的存储历程 请看以下存储历程:
/*SP2*/
CREATEPROCEDUREdbo.delUserAll
as
setnocounton
begin
deletefromdbo.[userinfo]
end
go
该存储历程删往userinfo表中的一切纪录,没有任何输出及输入,挪用办法与下面讲过的基础不异,只是不必获得纪录集:
**经由过程Command工具挪用存储历程**
DIMMyComm
SetMyComm=Server.CreateObject("ADODB.Command")
MyComm.ActiveConnection=MyConStrMyConStr是数据库毗连字串
MyComm.CommandText="delUserAll"指定存储历程名
MyComm.CommandType=4标明这是一个存储历程
MyComm.Prepared=true请求将SQL命令先行编译
MyComm.Execute此处不用再获得纪录集
SetMyComm=Nothing
固然也可经由过程Connection工具或Recordset工具挪用此类存储历程,不外创建Recordset工具是为了获得纪录集,在没有前往纪录集的情形下,仍是使用Command工具吧。
3.有前往值的存储历程
在举行相似SP2的操纵时,应充实使用SQLServer壮大的事件处置功效,以保护数据的分歧性。而且,我们大概必要存储历程前往实行情形,为此,将SP2修正以下:
/*SP3*/
CREATEPROCEDUREdbo.delUserAll
as
setnocounton
begin
BEGINTRANSACTION
deletefromdbo.[userinfo]
IF@@error=0
begin
COMMITTRANSACTION
return1
end
ELSE
begin
ROLLBACKTRANSACTION
return0
end
return
end
go
以上存储历程,在delete顺遂实行时,前往1,不然前往0,并举行回滚操纵。为了在ASP中获得前往值,必要使用Parameters汇合来声明参数:
**挪用带有前往值的存储历程并获得前往值**
DIMMyComm,MyPara
SetMyComm=Server.CreateObject("ADODB.Command")
MyComm.ActiveConnection=MyConStrMyConStr是数据库毗连字串
MyComm.CommandText="delUserAll"指定存储历程名
MyComm.CommandType=4标明这是一个存储历程
MyComm.Prepared=true请求将SQL命令先行编译
声明前往值
SetMypara=MyComm.CreateParameter("RETURN",2,4)
MyComm.Parameters.AppendMyPara
MyComm.Execute
获得前往值
DIMretValue
retValue=MyComm(0)或retValue=MyComm.Parameters(0)
SetMyComm=Nothing