ACCESS中的儲存過程 引數查詢

2021-04-26 18:34:08 字數 2372 閱讀 6704

access 的 mdb / mde 中存在類似儲存過程得概念(建立時也可以使用 ddl 語句的 create procedure 語句建立),但是叫引數查詢,並且乙個引數查詢只支援一條 jet sql 語句,因而 jet sql 不存在程式流控制語句,所有的程式流控制都交由 vba 控制。也就是說 t-sql 中的 if 以及 case 語句在 jet sql 中不存在,但是部分功能可以用 iif 函式以及 switch 函式代替,具體內容請參考 access 幫助。jet sql中也可以定義「變數」,但是這個變數和 t-sql 中的變數是不同的概念,因此在 jet sql 中被稱為「引數」。

事實上,access(2000 及以上版本)中所謂「儲存過程」,和 sql server 中的 stored procedure 是不能比的。它只能算是「stored procedure lite」,不支援多條 sql 語句,不支援邏輯語句(呵呵,畢竟不是 t-sql)等等,我也還不清楚它是不是預編譯了。不過,正如同 vbscript 實現的所謂「類」僅僅具有封裝性,對於**結構的「美化」和程式重用性具有很大促進一樣,access 的「輕量儲存過程」,對於規範,小出錯機率的資料庫操作應該也有幫助,並且效能可能會有提高。

一、在access中構建引數查詢

關鍵字 parameters 可構建引數  

parameters aa short, bb short;

select 表1.id

from 表1

where (((表1.id)>[aa] and (表1.id)<=[bb]));

上述引數查詢在開啟時會提示使用者輸入 [aa] [bb] 這兩個引數。access 中還有一種引數查詢是直接用窗體的某個控制項來傳遞引數給查詢,**如下

select 表1.id

from 表1

where (((表1.id)>forms!窗體a!控制項a and (表1.id)<=forms!窗體a!控制項b));

當「窗體a」開啟時,雙擊這個查詢時無需輸入引數,查詢會自動呼叫窗體上控制項a控制項b這兩個控制項的值來作為引數。

二、在vba中生成和呼叫引數查詢

引數查詢**如下:

parameters stra text;

insert into 表1 ( hh )

values ([stra])

vba 或者 vb 呼叫引數查詢如下:

三、何時使用引數查詢

我們使用 access 儲存過程的主要目的,就是使用引數額外提供的查詢,使用儲存過程,我們不必再面對將引數值拼接到 sql 語句字串中時遇到的各種麻煩,比如:

dim sql

sql = "select * from users where username = '" & username & "'"

以上**中,如果字串變數 username 中含有「'」單引號,則會報錯。我們必須手工轉化:

dim sql

sql = "select * from users where username = '" & replace(username, "'", "''") & "'"

轉化為連續兩個單引號。而使用帶引數查詢,我們的 sql 語句可以寫為

dim sql

sql = "select * from users where username = @username"

然後把引數 @username 的值以 command 物件的 parameter 屬性來傳入即可,很方便直觀。

四、access 儲存過程中引數的使用。

和 sql server 的儲存過程中用 @ 變數指定引數,然後同名傳入引數物件不同,access 中的引數,是以「順序」而非「名字」來識別的。傳入的引數無需指定名字,隨便起,sql 中的引數名字也可以隨便起,只要傳入引數值時,按照 sql 語句中的引數出現順序指定就行了。通常,我們使用 command 物件的 execute 方法,直接傳入引數值陣列來執行~

cmd.execute , array(username)

再比如,你的乙個 access 儲存過程這麼寫:

select * from users where username = p_username and booktitle = p_booktitle

你可以就這麼執行,通過傳入引數值陣列,但是順序要對應:

Access也支援儲存過程!

最新發布的ms access中,微軟已經盡努力使這種產品成為乙個真正全功能的關係資料庫系統。儲存過程,乙個通常和企業資料庫系統例如sqlserver相關的功能,現在也可以在access裡找到了。自從access2000以來,access已經具備了儲存過程的功能,而且是jet 4 database e...

在ACCESS 中呼叫後台儲存過程

深圳供電局自動化分部 楊炯夫 access是乙個client server的優秀前端開發工具,具有易學易用,介面友好,開發簡單,和其他資料庫介面靈活。但是,它要對大量資料處理時,速度比較慢。深圳供電局現有60萬使用者,下面有6個營業所,通過64k ddn 和局相連,如果有乙個營業所要對1萬使用者進行...

儲存過程的引數

儲存過程的引數 儲存過程如何與呼叫者進行互動呢,互動方式之一就是引數。注意 宣告變數的那句話就不需要了!引數 名字 型別 查詢 set uname call test4 2,uname select uname as myunameaa 結果 其實 end前面的select my uname 也是不...