注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Bioinformatics home

 
 
 

日志

 
 

asp 调用存储过程返回记录集和参数  

2008-03-22 11:26:58|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

来自csdn

ASP调用带参数存储过程的几种方式  
  1   这也是最简单的方法,两个输入参数,无返回值:  
  set   connection   =   server.createobject("adodb.connection")  
  connection.open   someDSN    
  Connection.Execute   "procname   varvalue1,   varvalue2"  
  '将所有对象清为nothing,释放资源  
  connection.close  
  set   connection   =   nothing  
   
   
  2   如果要返回   Recordset   集:  
  set   connection   =   server.createobject("adodb.connection")  
  connection.open   someDSN    
  set   rs   =   server.createobject("adodb.recordset")  
  rs.Open   "Exec   procname   varvalue1,   varvalue2",connection  
   
  '将所有对象清为nothing,释放资源  
  rs.close  
  connection.close  
  set   rs   =   nothing  
  set   connection   =   nothing  
   
   
  3   以上两种方法都不能有返回值,(Recordset除外),如果要得到返回值,需要用Command的方法。  
  首先说明,返回值有两种。一种是在存储过程中直接return一个值,就象C和VB的函数返回值那样;另一种是可以返回多个值,存储这些值的变量名称需要在调用参数中先行指定。  
  这个例子要处理多种参数,输入参数,输出参数,返回记录集以及一个直接返回值(够全了吧?)  
  存储过程如下:  
   
  use   pubs  
  GO  
   
  --   建立存储过程  
  create   procedure   sp_PubsTest  
   
  --   定义三个参数变量,注意第三个,特别标记是用于输出  
  @au_lname   varchar   (20),    
  @intID   int,  
  @intIDOut   int   OUTPUT  
   
  AS  
   
  SELECT   @intIDOut   =   @intID   +   1  
   
  SELECT   *    
  FROM   authors    
  WHERE   au_lname   LIKE   @au_lname   +   '%'  
   
  --直接返回一个值  
  RETURN   @intID   +   2  
   
   
  调用该存储过程的asp程序如下:  
   
  <%@   Language=VBScript   %>  
  <%  
  Dim   CmdSP  
  Dim   adoRS  
  Dim   adCmdSPStoredProc  
  Dim   adParamReturnValue  
  Dim   adParaminput  
  Dim   adParamOutput  
  Dim   adInteger  
  Dim   iVal  
  Dim   oVal  
  Dim   adoField  
  Dim   adVarChar  
   
  ‘这些值在   VB   中是预定义常量,可以直接调用,但在   VBScript   中没有预定义  
  adCmdSPStoredProc   =   4  
  adParamReturnValue   =   4  
  adParaminput   =   1  
  adParamOutput   =   2  
  adInteger   =   3  
  adVarChar   =   200  
   
  iVal   =   5  
  oVal   =   3  
   
  '建一个command对象  
  set   CmdSP   =   Server.CreateObject("ADODB.Command")  
   
  '建立连结  
  CmdSP.ActiveConnection   =   "Driver={SQL   Server};server=(local);Uid=sa;Pwd=;Database=Pubs"  
   
  '定义command   对象调用名称    
  CmdSP.CommandText   =   "sp_PubsTest"  
   
  '设置command调用类型是存储过程   (adCmdSPStoredProc   =   4)  
  CmdSP.CommandType   =   adCmdSPStoredProc  
   
  '往command   对象中加参数  
  '定义存储过程有直接返回值,并且是个整数,省缺值是4  
  CmdSP.Parameters.Append   CmdSP.CreateParameter("RETURN_VALUE",   adInteger,   adParamReturnValue,   4)  
  '定义一个字符型输入参数  
  CmdSP.Parameters.Append   CmdSP.CreateParameter("@au_lname",   adVarChar,   adParaminput,   20,   "M")  
  '定义一个整型输入参数  
  CmdSP.Parameters.Append   CmdSP.CreateParameter("@intID",   adInteger,   adParamInput,   ,   iVal)  
  '定义一个整型输出参数  
  CmdSP.Parameters.Append   CmdSP.CreateParameter("@intIDOut",   adInteger,   adParamOutput,   oVal)  
   
  '运行存储过程,并得到返回记录集  
  Set   adoRS   =   CmdSP.Execute  
   
   
  '把每个记录打印出来,其中的字段是虚拟的,可以不用管  
  While   Not   adoRS.EOF  
   
  for   each   adoField   in   adoRS.Fields  
  Response.Write   adoField.Name   &   "="   &   adoField.Value   &   "<br/>"   &   vbCRLF  
  Next  
  Response.Write   "<br/>"  
  adoRS.MoveNext  
  Wend  
   
  '打印两个输出值:  
  Response.Write   "<p>@intIDOut   =   “   &   CmdSP.Parameters("@intIDOut").Value   &   "</p>"  
  Response.Write   "<p>Return   value   =   "   &   CmdSP.Parameters("RETURN_VALUE").Value   &   "</p>"  
   
   
  '大扫除  
  Set   adoRS   =   nothing  
  Set   CmdSP.ActiveConnection   =   nothing  
  Set   CmdSP   =   nothing  
  %>

  评论这张
 
阅读(1222)| 评论(1)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017