亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > ASP > 正文

ASP 3.0高級編程(四十一)_ASP教程

2024-05-04 11:03:55
字體:
來源:轉載
供稿:網友

推薦:ASP 3.0高級編程(十二)
4.2.3 服務器端包含指令的例子本節提供了一些示例頁面,可以用來對各種服務器端包含語句進行實驗。打開示例網頁的子目錄Chapter04,顯示“SSI Directives and the ASP Server Object&rdqu

9.2.3 存儲過程
存儲過程的使用是Command對象得到應用的一個領域。存儲過程(有時也稱存儲查詢)是存儲在數據庫中預先定義的SQL查詢語句。
為什么應該創建和使用存儲過程而不是在代碼中直接使用SQL字符串呢?主要有以下幾個理由:
· 存儲過程被數據庫編譯過。這樣可以產生一個“執行計劃”,因此數據庫確切地知道它將做什么,從而加快了過程的執行速度。
· 存儲過程通常被數據庫高速緩存,這樣使它們運行得更快,因為此時不需要從磁盤中讀取它們。并非所有的數據庫都支持這種緩存機制,比如微軟的Access就不支持,而SQL Server卻支持。
· 通過指定數據庫中的表只能被存儲過程修改,可以確保數據更安全。這意味著具有潛在危險的SQL操作不會執行。
· 可以避免將ASP代碼和冗長的SQL語句混在一起,從而使ASP代碼更易于維護。
· 可以將所有SQL代碼集中存放于服務器。
· 可以在存儲過程中使用輸出參數,允許返回記錄集或其他的值。
一般說來,存儲過程幾乎總是比相當的SQL語句執行速度快。
為了使用存儲過程,只要將存儲過程的名字作為命令文本,并設置相應的類型。例如,考慮前面更新書價的例子。如果在SQL Server上創建一個存儲過程,可以編寫代碼:
CREATE PROCEDURE usp_UpdatePrices
AS
UPDATE Titles
SET Price = Price * 1.10
WHERE TYPE='Business'
對于微軟的Access數據庫,可以使用一個簡單的更新查詢語句完成相同的任務

要在ASP網頁中運行該存儲過程,只需要使用以下代碼:
Set cmdUpdate = Server.CreateObject("ADODB.Command")

cmdUpdate.ActiveConnection = strConn
cmdUpdate.CommandText = "usp_UpdatePrices"
cmdUpdate.CommandType = adCmdStoredProc

cmdUpdate.Execute , , adExecuteNoRecords
這只是運行存儲過程。沒有記錄集返回,因為只是在更新數據。需要記住的是,除非確實需要,不要創建記錄集。
雖然這樣做也可以,但并不是很靈活,因為僅僅處理一種類型的書。更好的做法是創建一個允許我們選擇書類型的過程,這樣就不必為每類書創建一個過程。同樣也可去掉固定的10%更新,這樣使得靈活性更好。那么,如何才能做到這一點呢,很簡單,使用參數。
1. 參數
存儲過程的參數(或變量)與一般的過程和函數的參數一樣,可以傳到函數內部,然后函數可以使用它的值。SQL Server(其他數據庫也一樣,包括Access)中的存儲過程都具有這樣的功能。
為了使存儲過程能處理多種類型的書,甚至允許用戶指定價格的增加(或減少),需要增加一些參數:
CREATE PROCEDURE usp_UpdatePrices
@Type Char(12),
@Percent Money

AS
UPDATE Titles
SET Price = Price * (1 @Percent / 100)
WHERE Type = @Type
現在,存儲過程usp_UpdatePrices帶有兩個參數:
· 一個是書的類型(@Type)。
· 一個是書價變化的百分比(@Percent)。
與VBScript的函數一樣,這些參數都是變量。然而,與VBScript和其他腳本語言不同的是:在這些腳本語言中的變量都是variant類型,而SQL變量具有確定的類型(char、Money等等)。必須遵守SQL變量的命名規范,即變量必須以符號@開始。
注意,我們讓百分數作為一個整數(如10代表10%),而不是作為一個分數值傳入此過程。這只是讓存儲過程變得更直觀一些。
2. Parameters集合
那么,現在有了帶參數的存儲過程,但如何通過ADO來調用它呢?我們已經見到了如何用Command對象調用不帶參數的存儲過程,實際上,它們之間并沒有什么不同。不同之處在于Parameters集合的使用。
Parameters集合包含存儲過程中每個參數的Parameter對象。然而,ADO并不會自動地知道這些參數是什么,因此,必須用CreateParameter方法創建它們,采用下面的形式:
Set Parameter = Command.CreateParameter (Name, [Type], [Direction], [Size], [Value])
參數及說明如表9-3所示:
表9-3 CreateParameter方法的參數及說明
參 數
說 明

Name
參數名。這是Parameters集合中的參數名,不是存儲過程中的參數名。然而,使用相同的名字是一個好的做法

Type
參數的數據類型。可以是一個adDataType常數,詳見附錄

Direction
參數的方向,指明是參數向存儲過程提供信息,還是存儲過程向ADO返回信息??梢允窍旅娴闹抵唬?br />adParamInput,參數是傳給存儲過程的輸入參數
adParamOutput,參數是從存儲過程檢索出的輸出參數
adParamInputOutput,參數可同時作為輸入和輸出參數
adParamReturnValue,該參數包含存儲過程返回的狀態

Size
參數長度。對于固定長度的類型,比如整型,該值可以忽略

Value
參數的值

一旦創建了參數就可以將其追加到Parameters集合中,例如:
Set parValue = cmdUpdate.CreateParameter("@Type", adVarWChar, adParamInput, _
12, "Business")
cmdUpdate.Parameters.Append parValue

Set parValue = cmdUpdate.CreateParameter("@Percent", adCurrency, _
adParamInput, , 10)
cmdUpdate.Parameters.Append parValue
沒有必要顯式地創建一個對象去保存參數,缺省的Variant類型已經可以工作得相當好。如果不想創建一個變量,也可以走捷徑,例如下面的代碼:
cmdUpdate.Parameters.Append = _
cmdUpdate.CreateParameter("@Percent", adCurrency, adParamInput, , 10)
這使用CreateParameter方法返回一個Parameter對象,并用Append方法接收它。這種方法比使用變量運行得快,卻加長了代碼行,可讀性比較差??梢愿鶕约旱膼酆眠x擇其中一種方法。
參數加到Parameters集合后,就保留在其中,因此,不一定在創建參數時就為每個參數賦值。可以在命令運行前的任何時候設置參數的值。例如:
cmdUpdate.Parameters.Append = _
cmdUpdate.CreateParameter("@Percent", adCurrency, adParamInput)

cmdUpdate.Parameters("@Percent") = 10
前一章提到了訪問集合中的值有好幾種方法,Parameters集合并沒有什么不同。上面的例子使用參數的名字在集合中檢索參數,也可以使用索引號進行檢索:
cmdUpdate.Parameters(0) = 10
以上代碼對參數集合中第一個(Parameters集合從0開始編號)參數進行了賦值

分享:ASP應用進階 ASP Error對象的相關知識
在VBScript中,有一個OnErrorResumeNext語句,它使腳本解釋器忽略運行期錯誤并繼續腳本代碼的執行。接著該腳本可以檢查Err.Number屬性的值,判別是否出現了錯誤。如果出現錯誤,返回一個非零值

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
92福利视频午夜1000合集在线观看| 久久精品国亚洲| 亚洲视频欧美视频| 久久九九精品99国产精品| 中文字幕不卡av| 亚洲欧洲日产国码av系列天堂| 日韩欧美国产一区二区| 欧美黄色片在线观看| 欧美激情一级欧美精品| 久久久午夜视频| 北条麻妃一区二区在线观看| 中文在线资源观看视频网站免费不卡| 亚洲毛片在线免费观看| 欧美—级高清免费播放| 亚洲人精选亚洲人成在线| 2021久久精品国产99国产精品| 国产在线拍揄自揄视频不卡99| 国产成人欧美在线观看| 亚洲精品黄网在线观看| 欧美成人精品h版在线观看| 97精品视频在线播放| 亚洲 日韩 国产第一| 国产在线观看精品一区二区三区| 久久久精品999| 97人人做人人爱| 亚洲精品久久7777777| 成人免费激情视频| 欧美国产第二页| 日韩精品极品在线观看| 亚洲精品欧美一区二区三区| 欧美一区二粉嫩精品国产一线天| 亚洲成人教育av| 亚洲精品短视频| 久久av红桃一区二区小说| 亚洲精品白浆高清久久久久久| 日韩免费观看高清| 久久精品夜夜夜夜夜久久| 激情久久av一区av二区av三区| 欧美怡红院视频一区二区三区| 国产精品久久久久秋霞鲁丝| 亚洲男人天堂2023| 亚洲欧美成人一区二区在线电影| 日本国产一区二区三区| 日韩大片免费观看视频播放| 欧美国产精品va在线观看| 欧美亚洲午夜视频在线观看| 亚洲欧美日韩久久久久久| 国产精品久久中文| 亲爱的老师9免费观看全集电视剧| 亚洲午夜女主播在线直播| 亚洲一区二区三区在线免费观看| 欧美激情精品久久久久久变态| 亚洲一区二区在线| 91po在线观看91精品国产性色| 亚洲天堂av综合网| 日韩欧美aaa| 精品国产区一区二区三区在线观看| 久久69精品久久久久久国产越南| 日韩欧美精品在线观看| 成人免费视频网| 久久青草福利网站| 国模gogo一区二区大胆私拍| 欧美日韩另类视频| 国产丝袜视频一区| 91精品久久久久久久久| 日韩在线视频网| 国产精品久久久久久久久影视| 日韩视频欧美视频| 国产一区二区色| 国产成人在线视频| 2018中文字幕一区二区三区| 国产精品久久久久久婷婷天堂| 亚洲精品一区在线观看香蕉| 亚洲区中文字幕| 国产高清在线不卡| 91理论片午午论夜理片久久| 欧美孕妇孕交黑巨大网站| 91精品啪在线观看麻豆免费| 国产日韩中文在线| 亚洲日韩欧美视频一区| 亚洲人成网站在线播| 国产亚洲在线播放| 久久久av一区| 亚洲精品国精品久久99热| 色噜噜久久综合伊人一本| 国产精品久久久| 色吧影院999| 久久电影一区二区| 久久久久久久久爱| 日韩av影院在线观看| 中文字幕精品在线| 日韩中文字幕免费视频| 亚洲国产高清高潮精品美女| 久久6免费高清热精品| 欧美电影在线观看| 欧美性猛交xxxx偷拍洗澡| 国产欧美va欧美va香蕉在线| 日韩中文字幕av| 在线不卡国产精品| 91久久精品国产91久久性色| 一区二区三区黄色| 久久人91精品久久久久久不卡| 欧美亚洲激情视频| 国产精品久久久久久亚洲影视| 日韩av影片在线观看| 中文字幕av一区二区三区谷原希美| 久久久99免费视频| 欧美成年人在线观看| 日韩av在线免费观看一区| 伊人成人开心激情综合网| 操91在线视频| 精品亚洲一区二区三区在线观看| 精品视频在线播放| 91av视频在线播放| 亚洲区在线播放| 亚洲精品suv精品一区二区| 国产精品九九九| 久久影院中文字幕| 欧美大荫蒂xxx| 国产精品视频区| 日韩精品极品视频| 欧美成人国产va精品日本一级| 亚洲国产高清福利视频| 久久亚洲欧美日韩精品专区| 日韩av色在线| 欧美丝袜第一区| 欧美中文字幕在线观看| 91在线免费看网站| 亚洲视频欧美视频| 亚洲国产精品中文| 国产精品劲爆视频| 51午夜精品视频| 精品国产1区2区| 亚洲精品国产综合久久| 久久久久久久久亚洲| 日本精品免费一区二区三区| 成人av色在线观看| 日韩va亚洲va欧洲va国产| 欧美日韩成人在线观看| www.日韩av.com| 亚洲黄页网在线观看| 国产午夜精品免费一区二区三区| 国内免费精品永久在线视频| 久久精品夜夜夜夜夜久久| 97视频免费在线观看| 91在线国产电影| 不卡伊人av在线播放| 国产精品成人一区二区| 精品中文字幕视频| 欧美丰满老妇厨房牲生活| 国产精品成人国产乱一区| 亚洲第一福利网| 国产精品成人在线| 91九色国产社区在线观看| 国产成人精品综合久久久| 日韩av中文字幕在线免费观看| 亚洲精品按摩视频| 欧美日本黄视频| 亚洲第一福利网| 精品中文字幕久久久久久| 国产午夜精品一区理论片飘花| 在线观看成人黄色| 欧美成人午夜剧场免费观看| 亚洲日本中文字幕免费在线不卡|