加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > Asp教程 > 正文

在ASP中创建一个存储过程的几个方法

发布时间:2023-08-24 14:31:13 所属栏目:Asp教程 来源:
导读:asp获取数据库的连接属性的方法 Option Explicit dim objCNN dim intCTProps dim item dim vbCRLF vbCRLF = chr(10) Response.Write vbCRLF Response.Write 春风精彩之查看数据库属性 vbCRLF Response.Write vbCRLF
asp获取数据库的连接属性的方法 Option Explicit dim objCNN dim intCTProps dim item dim vbCRLF vbCRLF = chr(10) Response.Write vbCRLF Response.Write 春风精彩之查看数据库属性 vbCRLF Response.Write vbCRLF set objCNN = Server.CreateObject(ADODB.connection
 
        1 这也是最简单的方法,两个输入参数,无返回值:
 
  set connection = server.createob ject("adodb.connection")
 
  connection.open someDSN
 
  Connection.Execute "procname varvalue1, varvalue2"
 
  '将所有对象清为nothing,释放资源
 
  connection.close
 
  set connection = nothing
 
  2 如果要返回 Recordset 集:
 
  set connection = server.createob ject("adodb.connection")
 
  connection.open someDSN
 
  set rs = server.createob ject("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=vb sc ript %>
 
  <%
 
  Dim CmdSP
 
  Dim adoRS
 
  Dim adCmdSPStoredProc
 
  Dim adParamReturnValue
 
  Dim adParamin put
 
  Dim adParamOutput
 
  Dim adInteger
 
  Dim iVal
 
  Dim oVal
 
  Dim adoField
 
  Dim adVarChar
 
  ‘这些值在 VB 中是预定义常量,可以直接调用,但在 vb sc ript 中没有预定义
 
  adCmdSPStoredProc = 4
 
  adParamReturnValue = 4
 
  adParamin put = 1
 
  adParamOutput = 2
 
  adInteger = 3
 
  adVarChar = 200
 
  iVal = 5
 
  oVal = 3
 
  '建一个command对象
 
  set CmdSP = Server.Createob ject("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, adParamin put, 20, "M")
 
  '定义一个整型输入参数
 
  CmdSP.Parameters.Append CmdSP.CreateParameter("@intID", adInteger, adParamin put, , 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
 
  %>
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章