Access也支援儲存過程!

2021-09-30 07:38:41 字數 1765 閱讀 3905

最新發布的ms access中,微軟已經盡努力使這種產品成為乙個真正全功能的關係資料庫系統。 儲存過程,乙個通常和企業資料庫系統例如sqlserver相關的功能,現在也可以在access裡找到了。 自從access2000以來,access已經具備了儲存過程的功能,而且是jet 4 database engine自帶的。如果你習慣於在sql server裡使用儲存過程,那麼你就會很熟悉它們如何在access裡使用。 但是要記住有一些限制。我會稍後作討論。

這篇文章分成兩個部份。 第一部份會詳細描述如何在使用ado.net和visual basic.net在access裡建立儲存過程。 第二部份則會示範如何利用在第一部分建立的儲存過程來建立乙個資料訪問層,並且在你自己的應用程式中使用。 這篇文章中的**已經在access2002種測試通過,即使如此,它也應該能執行於access2000。

儲存過程如何在access裡工作?

不像在access裡的其它的物件,儲存過程沒有使用者介面,並且不能在access的介面裡建立。 要建立它們的方法只有編碼。我將示範如何在ado.net中實現這些**。

當乙個儲存過程被新增到access資料庫時,jet engine會把儲存過程轉換到乙個查詢物件。 對乙個access開發者而言,這就象編寫乙個簡單的查詢,是不必要的工作。 然而,它確實有它的優點。考慮一下,乙個應用系統必須為了分開access版和sql server版而分成2個系統的情況吧。 使用儲存過程會使為應用程式的資料庫訪問層寫**變得更容易,程式在不同的版本之間區別很小。

為了示範,我會先顯示如何使用sql語句來建立儲存過程。 在文章末尾我會給列出需要在資料庫執行的所有語句的**。當使用和access包含的northwind資料庫時,它會建立4個儲存過程。 它們都集中於prodcut表,讓我們從最容易的那個開始: 選擇**裡所有行的資料。 為了建立這個儲存過程,在資料庫執行下列sql語句:

create proc procproductslist as select * from products;

create proc procproductsdeleteitem(inproductsid long) as delete from products where productsid = inproductsid;

注意create proc宣告右邊的括號。 有乙個定義為長整型的引數。 這是需要你輸入的變數,用於刪除記錄。

下項兩個分開的語句顯示了如何為product表建立乙個add和乙個update儲存過程。注意,為了文章的簡短,過程中沒有包括所有的字段:

create proc procproductsadditem(inproductname varchar(40), insupplierid long, incategoryid long)

as insert into products (productname, supplierid, categoryid)

values (inproductname, insupplierid, incategoryid);

create proc procproductsupdateitem(inproductid long, inproductname varchar(40))

as update products set productname = inproductname " where productid = inproductid;

在這裡,你可能會碰到一些限制,不能使用輸出引數、不要使用@字元、access無法訪問臨時表。

我懷疑在很多transaction sql裡有的選項在access裡是沒有的,因為它不是transaction sql相容的

也談儲存過程分頁

最近我測試小春寫的儲存分頁,發現有些許問題 建立乙個test id,name,fid 向test添充幾十條資料,使id 1,2,3,4.即遞增的integer 其他任意 在t sql debugger給改儲存過程分別傳遞如下引數 querystr from test keyfield id page...

也談儲存過程分頁

最近我測試小春寫的儲存分頁,發現有些許問題 建立乙個test id,name,fid 向test添充幾十條資料,使id 1,2,3,4.即遞增的integer 其他任意 在t sql debugger給改儲存過程分別傳遞如下引數 querystr from test keyfield id page...

C 執行ACCESS中儲存過程

access中儲存過程實際上就是access中建立的update insert delete語句。c 中執行access中儲存過程示例如下 庫名d db test.accdb,表名 tb test id 自動編號 runcount long 預設為 0 test text 10 update 無參語...