幾種ASP調用帶參數存儲過程的方式_ASP教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:asp批量錄入數據的實現
      批量錄入在數據庫的應用中比較廣泛的,關于批量錄入的方法也有好多種。下面我就結合我實際中的應用,談一下兒我是怎么實現的。主要用到的是form的集合的概念,通過循環取的所有的集合內數據。考慮到大家看著方便,我把它集成到了一個頁面。 下面是具體的代碼

      幾種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

      %>

      此外還有其他方式,稍微偏門一些,以后慢慢再說

      本文參考了多篇文章,這里不一一列出。

      分享:ASP中限制表單的多次重復提交
      在Internet上我們每天都會遇到數不清的表單,也看到其中大部分并沒有限制用戶多次提交同一個表單。缺乏這種限制有時候會產生某些預料不到的結果,如重復訂閱郵件服務或重復投票等。 本文介紹在ASP應用中防止用戶在當前會話期間多次提交同一表單的一個簡單方

      來源:模板無憂//所屬分類:ASP教程/更新時間:2009-03-02
      相關ASP教程