在ASP中調用預存程序的幾種方法

來源:互聯網
上載者:User

        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

  %>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.