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


储过程中定义的相同。  

  如果存储过程有多个参数,ASP代码会显得繁琐,可以使用with命令简化代码:  

'**调用带有输入输出参数的存储过程(简化代码)**  
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("@UserID",3,1,4,UserID)  
 .Parameters.append .CreateParameter("@UserName",200,2,40)  
 .Execute  
end with  
UserName = MyComm(1)  
Set MyComm = Nothing  
  假如我们要取得ID为1到10,10位用户的用户名,是不是要创建10次Command对象呢?不是的。如果需要多次调用同一存
储过程,只需改变输入参数,就会得到不同的输出:  

'**多次调用同一存储过程**  
DIM MyComm,UserID,UserName  
UserName = ""  
Set MyComm = Server.CreateObject("ADODB.Command")  
for UserID = 1 to 10  
 with MyComm  
  .ActiveConnection = MyConStr 'MyConStr是数据库连接字串  
  .CommandText = "getUserName" '指定存储过程名  
  .CommandType = 4 '表明这是一个存储过程  
  .Prepared = true '要求将SQL命令先行编译  
  if UserID = 1 then  
   .Parameters.append .CreateParameter("@UserID",3,1,4,UserID)  
   .Parameters.append .CreateParameter("@UserName",200,2,40)  
   .Execute  
  else  
   '重新给入参赋值(此时参数值不发生变化的入参以及出参不必重新声明)  
   .Parameters("@UserID") = UserID  
   .Execute  
  end if  
 end with  
 UserName = UserName + MyComm(1) + "," '也许你喜欢用数组存储  
next  
Set MyComm = Nothing  
  通过以上代码可以看出:重复调用同一存储过程时,只需为值发生改变的输入参数重新赋值即可,这一方法在有多个输
入输出参数,且每次调用时只有一个输入参数的值发生变化时,可以大大减少代码量。 

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

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