在ASP中调用存储过程的几种方法

[复制链接]
查看: 60|回复: 3
  • 慵懒
    2018-4-28 09:37
  • 发表于 2018-4-3 09:05:37 | 显示全部楼层 |阅读模式

    马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x

    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=sawd=;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 & "
    " & vbCRLF

      Next

      Response.Write "
    "

      adoRS.MoveNext

      Wend

      '打印两个输出值:

      Response.Write "@intIDOut = “ & CmdSP.Parameters("@intIDOut").Value & "
    "

      Response.Write "Return value = " & CmdSP.Parameters("RETURN_VALUE").Value & "
    "

      '大扫除

      Set adoRS = nothing

      Set CmdSP.ActiveConnection = nothing

      Set CmdSP = nothing

      %>

    发表于 2018-4-26 14:09:05 | 显示全部楼层
    回的人少,我来小顶一下
    回复

    使用道具 举报

    发表于 2018-5-10 12:04:22 | 显示全部楼层
    珍惜生命,果断回帖。
    回复

    使用道具 举报

    发表于 2018-5-18 05:27:56 | 显示全部楼层
    额,看不懂在说神马~@_@
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

     
     
    技术支持
    在线客服
    售后交流群瑞恩社区™售后</font><br><span>交流
    工作时间:
    8:00-18:00
    客服热线:
    15368564009
    微信扫一扫
    返回顶部 关注微信 下载APP 返回列表