日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

解析ASP與存儲(chǔ)過(guò)程(5)_ASP教程

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

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

在以上代碼中,可以看到,與聲明返回值不同,聲明輸入?yún)?shù)時(shí)需要5個(gè)參數(shù),聲明輸出參數(shù)時(shí)需要4個(gè)參數(shù)。聲明輸入?yún)?shù)時(shí)5個(gè)參數(shù)分別為:參數(shù)名、參數(shù)數(shù)據(jù)類型、參數(shù)類型、數(shù)據(jù)長(zhǎng)度、參數(shù)值。聲明輸入?yún)?shù)時(shí),沒有最后一個(gè)參數(shù):參數(shù)值。

需要特別注意的是:在聲明參數(shù)時(shí),順序一定要與存儲(chǔ)過(guò)程中定義的順序相同,而且各參數(shù)的數(shù)據(jù)類型、長(zhǎng)度也要與存儲(chǔ)過(guò)程中定義的相同。

如果存儲(chǔ)過(guò)程有多個(gè)參數(shù),ASP代碼會(huì)顯得繁瑣,可以使用with命令簡(jiǎn)化代碼:

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

'**調(diào)用帶有輸入輸出參數(shù)的存儲(chǔ)過(guò)程(簡(jiǎn)化代碼)**
DIM MyComm,UserID,UserName
UserID = 1
Set MyComm = Server.CreateObject("ADODB.Command")
with MyComm

.ActiveConnection = MyConStr 'MyConStr是數(shù)據(jù)庫(kù)連接字串
.CommandText = "getUserName" '指定存儲(chǔ)過(guò)程名
.CommandType = 4 '表明這是一個(gè)存儲(chǔ)過(guò)程
.Prepared = true '要求將SQL命令先行編譯
.Parameters.append .CreateParameter("@UserID",3,1,4,UserID)
.Parameters.append .CreateParameter("@UserName",200,2,40)
.Execute
end with
UserName = MyComm(1)
Set MyComm = Nothing

假如我們要取得ID為1到10,10位用戶的用戶名,是不是要?jiǎng)?chuàng)建10次Command對(duì)象呢?不是的,如果需要多次調(diào)用同一存儲(chǔ)過(guò)程,只需改變輸入?yún)?shù),就會(huì)得到不同的輸入?yún)?shù):

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

'**多次調(diào)用同一存儲(chǔ)過(guò)程**
DIM MyComm,UserID,UserName
UserName = ""
Set MyComm = Server.CreateObject("ADODB.Command")
for UserID = 1 to 10
with MyComm
.ActiveConnection = MyConStr 'MyConStr是數(shù)據(jù)庫(kù)連接字串
.CommandText = "getUserName" '指定存儲(chǔ)過(guò)程名
.CommandType = 4 '表明這是一個(gè)存儲(chǔ)過(guò)程
.Prepared = true '要求將SQL命令先行編譯
if UserID = 1 then
.Parameters.append .CreateParameter("@UserID",3,1,4,UserID)
.Parameters.append .CreateParameter("@UserName",200,2,40)
.Execute
else
'重新給入?yún)①x值(此時(shí)參數(shù)值不發(fā)生變化的入?yún)⒁约俺鰠⒉槐刂匦侣暶?
.Parameters("@UserID") = UserID
.Execute
end if
end with
UserName = UserName MyComm(1) "," '也許你喜歡用數(shù)組存儲(chǔ)
next
Set MyComm = Nothing

通過(guò)以上代碼可以看出:重復(fù)調(diào)用同一存儲(chǔ)過(guò)程時(shí),只需為值發(fā)生改變的輸入?yún)?shù)重新賦值即可,這一方法在有多個(gè)輸入輸出參數(shù),且每次調(diào)用時(shí)只有一個(gè)輸入?yún)?shù)的值發(fā)生變化時(shí),可以大大減少代碼量。

5. 同時(shí)具有返回值、輸入?yún)?shù)、輸出參數(shù)的存儲(chǔ)過(guò)程

前面說(shuō)過(guò),在調(diào)用存儲(chǔ)過(guò)程時(shí),聲明參數(shù)的順序要與存儲(chǔ)過(guò)程中定義的順序相同。還有一點(diǎn)要特別注意:如果存儲(chǔ)過(guò)程同時(shí)具有返回值以及輸入、輸出參數(shù),返回值要最先聲明。

為了演示這種情況下的調(diào)用方法,我們改善一下上面的例子。還是取得ID為1的用戶的用戶名,但是有可能該用戶不存在(該用戶已刪除,而userid是自增長(zhǎng)的字段)。存儲(chǔ)過(guò)程根據(jù)用戶存在與否,返回不同的值。此時(shí),存儲(chǔ)過(guò)程和ASP代碼如下:

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

/*SP5*/
CREATE PROCEDURE dbo.getUserName
--為了加深對(duì)"順序"的印象,將以下兩參數(shù)的定義順序顛倒一下
@UserName varchar(40) output,
@UserID int
as
set nocount on
begin
if @UserID is null return
select @UserName=username
from dbo.[userinfo]
where userid=@UserID
if @@rowcount>0
return 1
else
return 0
return
end
go

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

來(lái)源:模板無(wú)憂//所屬分類:ASP教程/更新時(shí)間:2009-08-22
相關(guān)ASP教程