最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ASP下存儲過程編寫入門全接觸第5/5頁

 更新時間:2007年10月23日 20:32:55   作者:  

7. 返回多個記錄集的存儲過程 
  本文最先介紹的是返回記錄集的存儲過程。有時候,需要一個存儲過程返回多個記錄集,在ASP中,如何同時取得這些記錄集呢?為了說明這一問題,在userinfo表中增加兩個字段:usertel及usermail,并設定只有登錄用戶可以查看這兩項內容。 
/*SP7*/ 
CREATE PROCEDURE dbo.getUserInfo 
@userid int, 
@checklogin bit 
as 
set nocount on 
begin 
if @userid is null or @checklogin is null return 
select username 
from dbo.[usrinfo] 
where userid=@userid 
--若為登錄用戶,取usertel及usermail 
if @checklogin=1 
select usertel,usermail 
from dbo.[userinfo] 
where userid=@userid 
return 
end 
go 
以下是ASP代碼: 
'**調用返回多個記錄集的存儲過程** 
DIM checklg,UserID,UserName,UserTel,UserMail 
DIM MyComm,MyRst 
UserID = 1 
'checklogin()為自定義函數,判斷訪問者是否登錄 
checklg = checklogin() 
Set MyComm = Server.CreateObject("ADODB.Command") 
with MyComm 
 .ActiveConnection = MyConStr 'MyConStr是數據庫連接字串 
 .CommandText = "getUserInfo" '指定存儲過程名 
 .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調用存儲過程的各種情況,本文已做了較為全面的說明。最后說一下在一個ASP程序中,調用多個存儲過程的不同方法。 

在一個ASP程序中,調用多個存儲過程至少有以下三種方法是可行的: 
1. 創(chuàng)建多個Command對象 
DIM MyComm 
Set MyComm = Server.CreateObject("ADODB.Command") 
'調用存儲過程一 
...... 
Set MyComm = Nothing 
Set MyComm = Server.CreateObject("ADODB.Command") 
'調用存儲過程二 
...... 
Set MyComm = Nothing 
...... 
2. 只創(chuàng)建一個Command對象,結束一次調用時,清除其參數 
DIM MyComm 
Set MyComm = Server.CreateObject("ADODB.Command") 
'調用存儲過程一 
..... 
'清除參數(假設有三個參數) 
MyComm.Parameters.delete 2 
MyComm.Parameters.delete 1 
MyComm.Parameters.delete 0 
'調用存儲過程二并清除參數 
...... 
Set MyComm = Nothing 
此時要注意:清除參數的順序與參數聲明的順序相反,原因嘛,我也不知道。 

3. 利用Parameters數據集合的Refresh方法重置Parameter對象 
DIM MyComm 
Set MyComm = Server.CreateObject("ADODB.Command") 
'調用存儲過程一 
..... 
'重置Parameters數據集合中包含的所有Parameter對象 
MyComm.Parameters.Refresh 
'調用存儲過程二 
..... 
Set MyComm = Nothing 
一般認為,重復創(chuàng)建對象是效率較低的一種方法,但是經測試(測試工具為Microsoft Application Center Test),結果出人意料: 
方法2 > = 方法1 > > 方法3 
方法2的運行速度大于等于方法1(最多可高4%左右),這兩種方法的運行速度遠大于方法3(最多竟高達130%),所以建議在參數多時,采用方法1,在參數較少時,采用方法2。 

  花了一天的時間,終于把我對于在ASP中調用存儲過程的一些粗淺的經驗形成了文字。這其中,有些是我只知其果而不明其因的,有些可能是錯誤的,但是,這些都是經過我親身實踐的。各位看官批判地接受吧。

相關文章

最新評論

即墨市| 密山市| 伊宁市| 黄大仙区| 海阳市| 福州市| 大洼县| 留坝县| 东阿县| 巫溪县| 阿城市| 全南县| 泰和县| 湟中县| 图片| 大荔县| 澜沧| 衢州市| 明光市| 景洪市| 东方市| 习水县| 兴和县| 沙坪坝区| 焦作市| 江西省| 西平县| 波密县| 息烽县| 谢通门县| 仙桃市| 合山市| 哈密市| 昭通市| 泽普县| 射阳县| 会泽县| 平度市| 德江县| 黔东| 临朐县|