經驗法則指出:調整應用程式設計與邏輯可解決 80% 效能問題,資料庫參數調整僅佔 20%。將資料庫邏輯直接硬編碼在應用程式中會導致高維護成本、難以除錯、切換資料庫驅動程式困難。
更好的架構:將資料庫視為真正的服務,提供與程式邏輯分離的業務邏輯服務介面。應用程式不應知悉資料表結構,只透過定義良好的介面(如「取得員工人數」、「調薪」)存取資料。在 32 位元 Windows 上,ActiveX/COM 元件是提供通用介面的主要方式。
Visual Basic 6.0 開發者可使用 Oracle Objects for OLE Code Wizard 自動產生包裝資料庫程式碼的 ActiveX 元件,無需手寫大量 VB 程式碼。
regsvr32.exe oo4ocodewiz.dll
regsvr32.exe odbtreeview.ocx
regsvr32.exe oo4oaddin.dll
執行後,從 Add-Ins → OO4O Code Wizard For Stored Procedures 啟動。
-- 套件規格
CREATE OR REPLACE PACKAGE empsvc IS
FUNCTION get_count RETURN INTEGER;
PROCEDURE give_raise(empno INTEGER, amount NUMBER);
END empsvc;
/
-- 套件主體
CREATE OR REPLACE PACKAGE BODY empsvc IS
FUNCTION get_count RETURN INTEGER IS
l_count INTEGER;
BEGIN
SELECT COUNT(*) INTO l_count FROM emp;
RETURN l_count;
END get_count;
PROCEDURE give_raise(empno INTEGER, amount NUMBER) IS
BEGIN
UPDATE emp SET sal = sal + amount WHERE empno = empno;
END give_raise;
END empsvc;
/
empsvc 套件。任何開發者即可從 OLE 瀏覽器選擇此元件,呼叫 get_count、give_raise 等方法,完全不需知道底層資料表結構。