程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> 關於ASP編程 >> 在ASP中調用存儲過程的幾種方法

在ASP中調用存儲過程的幾種方法

編輯:關於ASP編程

            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

      %>

      No
    1. 下一頁:
    Copyright © 程式師世界 All Rights Reserved