解析ASP與存儲過程(8)_ASP教程

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

      推薦:解析ASP中的常用服務(wù)器檢測源碼
      在寫ASP網(wǎng)頁時常用的檢測代碼: 服務(wù)器現(xiàn)在時間: 引用 % =now %> 服務(wù)器CPU型號: 引用 %=Request.ServerVariables(HTTP_UA_CPU)%> 當(dāng)前分辨率: 引用 &l

      以下是ASP代碼:

      '

      以下為引用的內(nèi)容:

      **調(diào)用返回多個記錄集的存儲過程**
      DIM checklg,UserID,UserName,UserTel,UserMail
      DIM MyComm,MyRst
      UserID = 1
      'checklogin()為自定義函數(shù),判斷訪問者是否登錄
      checklg = checklogin()
      Set MyComm = Server.CreateObject("ADODB.Command")
      with MyComm

      .ActiveConnection = MyConStr 'MyConStr是數(shù)據(jù)庫連接字串
      .CommandText = "getUserList" '指定存儲過程名
      .CommandType = 4 '表明這是一個存儲過程
      .Prepared = true '要求將SQL命令先行編譯
      .Parameters.append .CreateParameter("@userid",3,1,4,UserID)
      .Parameters.append .CreateParameter("@checklogin",11,1,1,checklg)
      Set MyRst = .Execute
      end with
      Set MyComm = Nothing

      '從第一個記錄集中取值
      UserName = MyRst(0)
      '從第二個記錄集中取值
      if not MyRst is Nothing then
      Set MyRst = MyRst.NextRecordset()
      UserTel = MyRst(0)
      UserMail = MyRst(1)
      end if
      Set MyRst = Nothing

      以上代碼中,利用Recordset對象的NextRecordset方法,取得了存儲過程返回的多個記錄集。

      至此,針對ASP調(diào)用存儲過程的各種情況,本文已做了較為全面的說明。最后說一下在一個ASP程序中,調(diào)用多個存儲過程的不同方法。

      在一個ASP程序中,調(diào)用多個存儲過程至少有以下三種方法都是可行的:

      1. 創(chuàng)建多個Command對象。

      以下為引用的內(nèi)容:

      DIM MyComm
      Set MyComm = Server.CreateObject("ADODB.Command")
      '調(diào)用存儲過程一
      ......
      Set MyComm = Nothing
      Set MyComm = Server.CreateObject("ADODB.Command")
      '調(diào)用存儲過程二
      ......
      Set MyComm = Nothing
      ......

      2.只創(chuàng)建一個Command對象,結(jié)束一次調(diào)用時,清除其參數(shù)

      以下為引用的內(nèi)容:

      DIM MyComm
      Set MyComm = Server.CreateObject("ADODB.Command")
      '調(diào)用存儲過程一
      .....
      '清除參數(shù)(假設(shè)有三個參數(shù))
      MyComm.Parameters.delete 2
      MyComm.Parameters.delete 1
      MyComm.Parameters.delete 0
      '調(diào)用存儲過程二并清除參數(shù)
      ......
      Set MyComm = Nothing

      此時要注意:清除參數(shù)的順序與參數(shù)聲明的順序相反,原因嘛,我也不知道。

      3. 利用Parameters數(shù)據(jù)集合的Refresh方法重置Parameter對象

      DIM MyComm
      Set MyComm = Server.CreateObject("ADODB.Command")
      '調(diào)用存儲過程一
      .....
      '重置Parameters數(shù)據(jù)集合中包含的所有Parameter對象
      MyComm.Parameters.Refresh
      '調(diào)用存儲過程二
      .....
      Set MyComm = Nothing

      一般認(rèn)為,重復(fù)創(chuàng)建對象是效率較低的一種方法,但是經(jīng)測試(測試工具為Microsoft Application Center Test),結(jié)果出人意料:

      方法2 >= 方法1 >> 方法3

      方法2的運(yùn)行速度大于等于方法1(最多可高4%左右),這兩種方法的運(yùn)行速度遠(yuǎn)大于方法3(最多竟高達(dá)130%),所以建議在參數(shù)多時,采用方法1,在參數(shù)較少時,采用方法2。

      花了一天的時間,終于把我對于在ASP中調(diào)用存儲過程的一些粗淺的經(jīng)驗(yàn)形成了文字。這其中,有些是我只知其果而不明其因的,有些可能是錯誤的,但是,這些都是經(jīng)過我親身實(shí)踐的。各位看官批判地接受吧。有不同意見,希望一定向我指明,先謝了。

      分享:解析ASP中腳本執(zhí)行順序
      如果機(jī)房馬上要關(guān)門了,或者你急著要和MM約會,請直接跳到第四個自然段。 以下敘述的腳本包括服務(wù)器端腳本和客戶端的腳本,服務(wù)器端腳本指在服務(wù)器上運(yùn)行的那部分腳本,比如常見的Respon

      共8頁上一頁12345678下一頁
      來源:模板無憂//所屬分類:ASP教程/更新時間:2009-08-22
      相關(guān)ASP教程