网络编程
位置:首页>> 网络编程>> Asp编程>> ASP存储过程应用全接触(2)

ASP存储过程应用全接触(2)

作者:AppleBBS 来源:博客园 发布时间:2007-08-18 14:28:00 

标签:存储过程,ASP,SQL,Server
  


2. 没有输入输出的存储过程

  请看以下存储过程:




/*SP2*/
CREATE PROCEDURE dbo.delUserAll
as
set nocount on
begin
delete from dbo.[userinfo]
end
go 

  该存储过程删去userinfo表中的所有记录,没有任何输入及输出,调用方法与上面讲过的基本相同,只是不用取得记录集:



’**通过Command对象调用存储过程**
DIM MyComm
Set MyComm = Server.CreateObject("ADODB.Command")
MyComm.ActiveConnection = MyConStr ’MyConStr是数据库连接字串
MyComm.CommandText = "delUserAll" ’指定存储过程名
MyComm.CommandType = 4 ’表明这是一个存储过程
MyComm.Prepared = true ’要求将SQL命令先行编译
MyComm.Execute ’此处不必再取得记录集
Set MyComm = Nothing  


  当然也可通过Connection对象或Recordset对象调用此类存储过程,不过建立Recordset对象是为了取得记录集,在没有返回记录集的情况下,还是利用Command对象吧。

3. 有返回值的存储过程

  在进行类似SP2的操作时,应充分利用SQL Server强大的事务处理功能,以维护数据的一致性。并且,我们可能需要存储过程返回执行情况,为此,将SP2修改如下:


/*SP3*/
CREATE PROCEDURE dbo.delUserAll
as
set nocount on
begin
BEGIN TRANSACTION
delete from dbo.[userinfo]
IF @@error=0 
begin
COMMIT TRANSACTION
return 1
end
ELSE
begin
ROLLBACK TRANSACTION
return 0
end 
return
end
go 


  以上存储过程,在delete顺利执行时,返回1,否则返回0,并进行回滚操作。为了在ASP中取得返回值,需要利用Parameters集合来声明参数:


’**调用带有返回值的存储过程并取得返回值**
DIM MyComm,MyPara
Set MyComm = Server.CreateObject("ADODB.Command")
MyComm.ActiveConnection = MyConStr ’MyConStr是数据库连接字串
MyComm.CommandText = "delUserAll" ’指定存储过程名
MyComm.CommandType = 4 ’表明这是一个存储过程
MyComm.Prepared = true ’要求将SQL命令先行编译
’声明返回值
Set Mypara = MyComm.CreateParameter("RETURN",2,4)
MyComm.Parameters.Append MyPara
MyComm.Execute
’取得返回值
DIM retValue
retValue = MyComm(0) ’或retValue = MyComm.Parameters(0)
Set MyComm = Nothing 


  在MyComm.CreateParameter("RETURN",2,4)中,各参数的含义如下:

  第一个参数("RETURE")为参数名。参数名可以任意设定,但一般应与存储过程中声明的参数名相同。此处是返回值,我习惯上设为"RETURE";

  第二个参数(2),表明该参数的数据类型,具体的类型代码请参阅ADO参考,以下给出常用的类型代码:


adBigInt: 20 ;
adBinary : 128 ; 
adBoolean: 11 ;
adChar: 129 ;
adDBTimeStamp: 135 ;
adEmpty: 0 ;
adInteger: 3 ;
adSmallInt: 2 ; 
adTinyInt: 16 ;
adVarChar: 200 ; 


  对于返回值,只能取整形,且-1到-99为保留值;

  第三个参数(4),表明参数的性质,此处4表明这是一个返回值。此参数取值的说明如下:

  0 : 类型无法确定; 1: 输入参数;2: 输入参数;3:输入或输出参数;4: 返回值

  以上给出的ASP代码,应该说是完整的代码,也即最复杂的代码,其实


Set Mypara = MyComm.CreateParameter("RETURN",2,4)
MyComm.Parameters.Append MyPara

 


  可以简化为


MyComm.Parameters.Append MyComm.CreateParameter("RETURN",2,4) 


  甚至还可以继续简化,稍后会做说明。

  对于带参数的存储过程,只能使用Command对象调用(也有资料说可通过Connection对象或Recordset对象调用,但我没有试成过)。

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com