首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Access 前端呼叫 SQL Server 後端預存程序三大架構模式:作業排程、觸發器與傳遞查詢

     編輯:MySQL 資料庫相關知識

架構對比

模式觸發方式即時性適用場景優點缺點
1. 作業排程SQL Agent Job / Oracle Job Queue低 (批次)大量資料夜間處理、報表產出不阻塞前端、可重試、集中管理延遲高、需輪詢狀態
2. 觸發器INSERT/UPDATE/DELETE 事件高 (同步)單筆業務即時計算 (如修改讀數即算費)邏輯集中資料庫、前端無感、ACID 保障增加寫入延遲、除錯難、遞迴風險
3. 傳遞查詢VBA/巨集呼叫 Pass-Through Query高 (同步)複雜報表、需即時回傳結果集直連後端、支援完整 T-SQL、無中介表Oracle 需特殊語法、連線管理複雜

傳遞查詢建立步驟

  1. 建立查詢 → 設計檢視 → 關閉「顯示表」。
  2. 查詢 → SQL 專用 → 傳遞。
  3. 屬性表設定:
    • ODBC 連接字串:ODBC;DSN=ntserver0;UID=sa;PWD=;DATABASE=BMS
    • 傳回記錄:否 (執行 SP 不回傳資料集時)。
  4. SQL 視窗輸入:EXEC sp_statistics。
  5. 儲存為 stat_query。

VBA 呼叫範例

Private Sub cmdStat_Click()
    Dim dbs As Database, qdf As QueryDef
    Set dbs = CurrentDb
    Set qdf = dbs.QueryDefs("stat_query")
    qdf.Execute dbFailOnError
    Set qdf = Nothing
    Set dbs = Nothing
End Sub

跨平台注意事項

  • SQL Server:EXEC sp_name 直接執行。
  • Oracle:需用 BEGIN pkg.proc; END; 或 CALL proc(),單純 EXEC 會報 ORA-00900。
  • 連線池:建議使用 ADO 搭配連線池替代 DAO,提升併發效能。

最佳實踐建議

  1. 核心業務邏輯下沉預存程序,前端僅負責 UI 與參數傳遞。
  2. 大量批次處理走 Job,單筆即時走 Trigger 或 Pass-Through。
  3. 統一錯誤處理:SP 回傳錯誤碼/訊息,前端統一解析顯示。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved