在Access 2003中,我們可以創建存儲過程或函數嗎?可以使Access 2003中的存儲過程或函數?
回答
對於Access 2003,答案是否定的。
Access 2010確實有表觸發器和存儲過程。這些是作爲行更新結果運行的真正的引擎級例程。因此,導致行修改的表單或VBA記錄集代碼或sql更新將導致存儲過程和表級代碼運行。事實上,即使通過ODBC從VB.net,甚至VB6的外部連接將導致這些存儲過程運行。
但是在Access 2010之前,如果您使用默認數據庫引擎,則沒有存儲過程。但是,您可以選擇不同的數據引擎,然後選擇JET作爲您的Access應用程序,當您這樣做時,您可以擁有存儲過程,但必須使用您選擇使用Access的任何數據庫引擎隨附的工具。所以,請記住,就像當你建立一個網站時一樣,你可以出去選擇你使用的數據庫引擎。 ms-access也是一樣,你可以自由選擇一個數據庫引擎,並有存儲過程用於Access。
如上所述,此例外是Access 2010現在確實具有表級觸發器和存儲過程。
不是「存儲過程」本身。您可以創建已保存的查詢,並使用與Sql Server中存儲的特效相同的方式調用Access中的那些查詢。保存的查詢具有的限制是您無法使用流程代碼的控制(例如If Else或Case When),並且一次只能保存一條命令。
創建保存查詢的最簡單方法是打開Access,轉到查詢選項卡,然後在設計視圖中創建一個新查詢。關閉Show Tables對話框並切換到SQL View。使用上面的示例,鍵入SQL子句的第一部分:
INSERT INTO Addresses (Organisationname, AddressLine1, AddressLine2,
AddressLine3, City, StateCounty, CountryID, PostCodeZip, SwitchboardNo,
FaxNo, Email, Website, RecordStatus, LastUpdated, LastUpdateBy)
Values
現在打開括號並創建參數佔位符。這些總是在方括號([])中,它告訴Access期望值作爲參數。你可以把任何你喜歡的東西放在方括號內。 [P1],[P2],[P3]等是我的選擇,所以最終的查詢將是這樣的:
INSERT INTO Addresses (Organisationname, AddressLine1, AddressLine2,
AddressLine3, City, StateCounty,CountryID, PostCodeZip, SwitchboardNo, FaxNo,
Email, Website, RecordStatus, LastUpdated, LastUpdateBy) Values ([p1],[p2],[p3],
[p4],[p5],[p6],[p7],[p8],[p9],[p10],[p11],[p12], [p13],[p14],[p15]);
如果您運行的查詢,Access將提示您爲每個字段輸入。針對每個字段輸入數據以測試查詢是否有效。至於調試,你剛剛做到了。將查詢保存爲有意義的內容。這個保存爲qUpdateAddresses。在保存它時,您可能會注意到Access會自動檢測到這是一個追加查詢。一旦你確認了它的工作,關閉數據庫。
從ASP.NET運行它,看一下這篇文章,注意接近尾聲位認爲的當家「保存查詢」: http://www.mikesdotnetting.com/Article.aspx?ArticleID=26
[quote]你一次只能保存一條命令。 [/ quote]這是否意味着我們只能使用每個保存的查詢的插入/更新? – soclose 2011-04-15 08:21:38
研究鏈接在回答中提及 – gbbosmiya 2011-04-15 09:14:11
Jet/ACE數據庫引擎一次只支持一條SQL語句 - 無批處理語句。這是因爲它不是具有中央服務器進程的服務器數據庫引擎,該進程負責管理與數據庫的交互並決定交叉來自多個客戶端的請求。服務器可以接受100個SQL語句的SQL批處理,並將個別語句與其他用戶的請求進行交錯。但是Jet/ACE沒有這樣做的中央權限,因此在db再次可用之前,批處理必須作爲一個整體來執行 - 因此缺少對它的支持。 – 2011-04-18 05:37:12
- 1. 使用Access 2003從存儲過程中檢索Oracle遊標
- 2. MySql存儲過程或函數?
- 3. 遞歸存儲過程或函數
- 4. 存儲過程比函數快或不
- 5. 我可以在MS Access 2010中創建存儲過程嗎?
- 6. SQL Server中的函數或存儲過程可以返回動態表嗎?
- 7. MS Access 2003 - SUM函數
- 8. 存儲過程和函數
- 9. 使用存儲過程在Access 2007中以PDF形式報告
- 10. Microsoft Access - 使用光標存儲過程
- 11. 從Access中的SQL Server存儲過程使用輸出參數
- 12. SparkSql中的存儲過程/函數
- 13. 存儲過程中的函數 - SQL 2008
- 14. 過程或函數在我的存儲過程中指定的參數太多
- 15. T-SQL中的臨時函數或存儲過程
- 16. 在MS Access中創建存儲過程?
- 17. 在Access 2007中查看存儲過程
- 18. 我們可以從函數調用存儲過程嗎?
- 19. 使用存儲過程作爲函數
- 20. 如何在ADO.NET中使用MS Access參數化存儲過程?
- 21. 在任何開源軟件中存儲過程或存儲函數?
- 22. 將參數從存儲過程傳遞給函數(在存儲過程中)
- 23. 如何在存儲過程中創建函數或視圖
- 24. 使用多行表函數或存儲過程
- 25. 在函數中執行存儲過程或動態SQL
- 26. 在存儲過程中調用「函數」
- 27. UDF或存儲過程的存儲庫
- 28. 如何從sql select語句中調用存儲過程或存儲函數
- 29. 特定存儲過程或函數的源代碼
- 30. 將函數集替換爲MySQL中的存儲過程或函數?
Albert,它取決於「存儲過程」的定義。 Access中的DML查詢,特別是參數化的,實際上很像服務器數據庫中的存儲過程,沒有過程代碼。事實上,它們是用「procedure」關鍵字在DDL中創建的(或者它已經被報告給我 - 我從來沒有使用過它)。正如你所看到的,這裏的下一個答案將參數化作爲存儲過程的關鍵特性(儘管不清楚該參數化的SELECT語句是否會被計數)。 – 2011-04-18 05:33:36