Access 的 MDB / MDE 中存在類似存儲(chǔ)過程得概念(建立時(shí)也可以使用 DDL 語(yǔ)句的 create procedure 語(yǔ)句建立),但是叫參數(shù)查詢,并且一個(gè)參數(shù)查詢只支持一條 JET SQL 語(yǔ)句,因而 JET SQL 不存在程序流控制語(yǔ)句,所有的程序流控制都交由 VBA 控制。也就是說 T-SQL 中的 IF 以及 CASE 語(yǔ)句在 JET SQL 中不存在,但是部分功能可以用 IIF 函數(shù)以及 SWITCH 函數(shù)代替,具體內(nèi)容請(qǐng)參考 ACCESS 幫助。JET SQL中也可以定義“變量”,但是這個(gè)變量和 T-SQL 中的變量是不同的概念,因此在 JET SQL 中被稱為“參數(shù)”。 事實(shí)上,Access(2000 及以上版本)中所謂“存儲(chǔ)過程”,和 SQL Server 中的 Stored Procedure 是不能比的。它只能算是“Stored Procedure Lite”,不支持多條 SQL 語(yǔ)句,不支持邏輯語(yǔ)句(呵呵,畢竟不是 T-SQL)等等,我也還不清楚它是不是預(yù)編譯了。不過,正如同 VBScript 實(shí)現(xiàn)的所謂“類”僅僅具有封裝性,對(duì)于代碼結(jié)構(gòu)的“美化”和程序重用性具有很大促進(jìn)一樣,Access 的“輕量存儲(chǔ)過程”,對(duì)于規(guī)范,小出錯(cuò)幾率的數(shù)據(jù)庫(kù)操作應(yīng)該也有幫助,并且性能可能會(huì)有提高。
一、在ACCESS中構(gòu)建參數(shù)查詢 關(guān)鍵字 PARAMETERS 可構(gòu)建參數(shù)
上述參數(shù)查詢?cè)诖蜷_時(shí)會(huì)提示用戶輸入 [aa] [bb] 這兩個(gè)參數(shù)。ACCESS 中還有一種參數(shù)查詢是直接用窗體的某個(gè)控件來傳遞參數(shù)給查詢,代碼如下
當(dāng)“窗體A”打開時(shí),雙擊這個(gè)查詢時(shí)無需輸入?yún)?shù),查詢會(huì)自動(dòng)調(diào)用窗體上控件A控件B這兩個(gè)控件的值來作為參數(shù)。
二、在VBA中生成和調(diào)用參數(shù)查詢 參數(shù)查詢代碼如下:
VBA 或者 VB 調(diào)用參數(shù)查詢?nèi)缦拢?br>
三、何時(shí)使用參數(shù)查詢 我們使用 Access 存儲(chǔ)過程的主要目的,就是使用參數(shù)額外提供的查詢,使用存儲(chǔ)過程,我們不必再面對(duì)將參數(shù)值拼接到 SQL 語(yǔ)句字符串中時(shí)遇到的各種麻煩,比如:
四、Access 存儲(chǔ)過程中參數(shù)的使用。 和 SQL Server 的存儲(chǔ)過程中用 @ 變量指定參數(shù),然后同名傳入?yún)?shù)對(duì)象不同,Access 中的參數(shù),是以“順序”而非“名字”來識(shí)別的。傳入的參數(shù)無需指定名字,隨便起,SQL 中的參數(shù)名字也可以隨便起,只要傳入?yún)?shù)值時(shí),按照 SQL 語(yǔ)句中的參數(shù)出現(xiàn)順序指定就行了。通常,我們使用 Command 對(duì)象的 Execute 方法,直接傳入?yún)?shù)值數(shù)組來執(zhí)行~
再比如,你的一個(gè) Access 存儲(chǔ)過程這么寫:
你可以就這么執(zhí)行,通過傳入?yún)?shù)值數(shù)組,但是順序要對(duì)應(yīng):
五、參考鏈接: (1)http:///fixhtm/79FAB21E12DC.htm?tt= (2)http:///fixhtm/72FAB21E15DC.htm?tt= |
|