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



 5. 同时具有返回值、输入参数、输出参数的存储过程  

  前面说过,在调用存储过程时,声明参数的顺序要与存储过程中定义的顺序相同。还有一点要特别注意:如果存储过程
同时具有返回值以及输入、输出参数,返回值要最先声明。  

  为了演示这种情况下的调用方法,我们改善一下上面的例子。还是取得ID为1的用户的用户名,但是有可能该用户不存
在(该用户已删除,而userid是自增长的字段)。存储过程根据用户存在与否,返回不同的值。此时,存储过程和ASP代码如
下:  

/*SP5*/  
CREATE PROCEDURE dbo.getUserName  
--为了加深对"顺序"的印象,将以下两参数的定义顺序颠倒一下  
@UserName varchar(40) output,  
@UserID int  
as  
set nocount on  
begin  
if @UserID is null return  
select @UserName=username  
from dbo.[userinfo]  
where userid=@UserID  
if rowcount> 0  
return 1  
else  
return 0  
return  
end  
go  

'**调用同时具有返回值、输入参数、输出参数的存储过程**  
DIM MyComm,UserID,UserName  
UserID = 1  
Set MyComm = Server.CreateObject("ADODB.Command")  
with MyComm  
.ActiveConnection = MyConStr 'MyConStr是数据库连接字串  
.CommandText = "getUserName" '指定存储过程名  
.CommandType = 4 '表明这是一个存储过程  
.Prepared = true '要求将SQL命令先行编译  
'返回值要最先被声明  
.Parameters.Append .CreateParameter("RETURN",2,4)  
'以下两参数的声明顺序也做相应颠倒  
.Parameters.append .CreateParameter("@UserName",200,2,40)  
.Parameters.append .CreateParameter("@UserID",3,1,4,UserID)  
.Execute  
end with  
if MyComm(0) = 1 then  
UserName = MyComm(1)  
else  
UserName = "该用户不存在"  
end if  
Set MyComm = Nothing  
  6. 同时返回参数和记录集的存储过程  

  有时候,我们需要存储过程同时返回参数和记录集,比如在利用存储过程分页时,要同时返回记录集以及数据总量等参
数。以下给出一个进行分页处理的存储过程:  

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

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