1. 程式人生 > >儲存過程如何在Access裡工作?

儲存過程如何在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 procCustomerList"是實際上建立儲存過程的部份。 在”AS"下面的部分可以為任何有效的SQL語句。 

經常性的,你會需要傳遞引數到儲存過程去用於查詢。 例如你可能想要根據某一個ProductID刪除一個記錄。 下列儲存過程顯示如何實現這個目的: 

"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; 

注意:當引數數量超過一個的時候,用逗號分開。

限制 

在這裡,你可能會碰到一些限制,尤其是如果當你已經非常習慣於SQL SERVER的強大功能的時候。 

不能使用輸出引數。 

不要使用@字元。 @字元通常用於Transaction SQL( SQL SERVER),代表一個本地變數 。 Access不總是會轉換這個字元, 有時會將它省略。這個問題可能導致很難找的BUG, 會使你多掉幾把頭髮。 

Access無法存取臨時表。 


我懷疑在很多Transaction SQL裡有的選項在Access裡是沒有的,因為它不是Transaction SQL相容的

相關推薦

儲存過程如何在Access工作?

不像在Access裡的其它的物件,儲存過程沒有使用者介面,並且不能在Access的介面裡建立。 要建立它們的方法只有編碼。我將示範如何在ADO.NET中實現這些程式碼。 當一個儲存過程被新增到Access資料庫時,JET Engine會把儲存過程轉換到一個查詢物件。 對

Oracle PL/SQL 執行包儲存過程 遊標輸出引數

oracle PL/SQL 如何執行包裡的儲存過程,儲存過程帶遊標輸出引數 [問題點數:40分] 收藏帖子 回覆 mjlwq 結帖率 87.5% create or replace package pkg_

【Spring Data Access】SimplJdbcCall呼叫儲存過程

SimpleJdbcCall 呼叫儲存過程 SimpleJdbcCall主要用來進行呼叫儲存過程,這個方法使用起來也比較簡單,先通過一個比較簡單的示例來熟悉一下api import org.springframework.context.ApplicationC

在VB.NET中使用MS Access儲存過程 — 第二部份

在VB.NET中使用MS Access儲存過程—第二部份 介紹 歡迎來到MS Access儲存過程的第二部分討論。第一部分詳細地描述瞭如何使用ADO.NET和Visual Basic.NET在Access中建立儲存過程. 第二部分將會示範如何通過資料庫訪問層訪問在第一部

SQL 儲存過程呼叫另一個儲存過程

由於建立了一個儲存過程,並且要在另一個儲存過程裡呼叫這個儲存過程所以在網上找了一下相關的程式碼,現在總結一下,防止以後還會用到 由於這次我寫的儲存過程只需要返回一個求和的結果,所以我使用了output

工作總結24 Windows的任務計劃,定時執行oracle儲存過程或語句塊

1、在pl/sql中,建立一個儲存過程 create or replace procedure pro as begin    /***業務程式***/   commit; end pro; 2、在某

SQLServer 在儲存過程使用事務控制的簡單小例子

   insert into benInfo values(117,111,'111',111,2)   SET @[email protected]@ERROR       update benInfo set benMoney=222222222 where personID=10   SET

儲存過程的序列報錯Error: PLS-00302: component 'SEQUENCE_NAME' must be declared

      今天遇到一個奇怪的問題,儲存過程的呼叫序列編譯是報錯 Error: PLS-00302: component 'SEQUENCE_NAME' must be declared 序列是存在,拿出來可以執行成功,序列加字首了,最後找到原因了是因為使用者下有一個表和使

Sybase 動態改變儲存過程查詢的資料庫

declare @sql varchar(500) select @sql='select * from '[email protected]+'..tableName' --此句用於執行拼接好的SQL語句 exec(@sql) 例二: declare @sql

創建MYSQL的儲存過程

創建mysql的儲存過程 創建不帶參數的儲存過程CREATE PROCEDURE 過程名() 過程體 SELECT VERSION(); 調用儲存過程第一種CALL 過程名(); (帶有參數時使用)第二種CALL 過程名; (不帶參數時使用)

Mysql儲存過程8:repeat循環

local cal 其他 host ted query code class pan 語法: repeat SQL until 條件 end repeat; 就是相當於其他語言中的: do{ # }while(); mys

Mysql儲存過程4:mysql變量設置

from 默認 pan procedure weight use mysql變量 sql 寫法 默認全局變量是兩個@@開頭, 可用show variables查看所有默認變量: @@user #declare定義變量只能用在儲存過程中 #declare 變量名 數據類型

Mysql儲存過程3:if語句

sql語句 inpu arguments ted div mysql then for clas --if/else語句 if 條件 then SQL語句 else SQL語句elseifSQL語句 end if; create procedure test1( n

Mysql儲存過程2:變量定義與參數傳遞

變量定義 color ted lec mysq 傳遞 參數傳遞 fault 可選 #儲存過程 中的變量定義 declare 變量名 類型 可選類型 -- 跟建表差不多 create procedure p() begin declare age int de

MySQL 儲存過程-原理、語法、函數詳細說明

exp sql 十六進制 作用範圍 安全機制 系統管理員 rtrim 編程 xtra Mysql儲存過程是一組為了完成特定功能的SQL語句集,經過編譯之後存儲在數據庫中,當需要使用該組SQL語句時用戶只需要通過指定儲存過程的名字並給定參數就可以調用執行它了,簡而言之就是一組

視圖,觸發器,事物,儲存過程,函數,流程控制

tro then database lap data rtrim( -s sun .com 一視圖 建表 create database o; use o; create table teacher( tid int primary key auto_increment

9.儲存過程

class 使用 不能 報錯 mono cal eat 好的 color mysql在5.1之後增加了存儲過程的功能, 存儲過程運行在mysql內部,語句都已經編譯好了,速度比sql更快. 存儲過程與mysql相當於shell和linux系統。如果你是程序員的話,那我告

儲存過程

red 結果集 sel nbsp 輸出參數 .com fff 操作 使用 本文參考: http://www.cnblogs.com/knowledgesea/archive/2013/01/02/2841588.html https://blog.csdn.net/len

MySQL儲存過程

date 算數運算 else 使用 not 流程控制語句 posit 表達 gin 儲存過程 本文章原創,轉載需註明出處. 前提: 在大型數據庫中 來源: 為了完成特定功能的SQL語句集 定義: 儲存在數據庫中, 用戶通過指定儲存過程的名字並給出參數(帶有參數的)來執

MySql 在cmd下的學習筆記 —— 有關儲存過程的操作(procedure)

image eat spa proc idt span case 流程 循環 我們把若幹條sql封裝取來,起個名字------把此過程存儲在數據庫中叫存儲過程 調用procedure 儲存過程是可以變成的,意味著可以使用變量,表達式,控制結構 來完成復雜的功能 聲明