首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

為 PL/SQL 套件建立 ActiveX 服務元件的實作方法

     編輯:關於SqlServer

架構觀點:80% 應用程式,20% 資料庫

經驗法則指出:調整應用程式設計與邏輯可解決 80% 效能問題,資料庫參數調整僅佔 20%。將資料庫邏輯直接硬編碼在應用程式中會導致高維護成本、難以除錯、切換資料庫驅動程式困難。

更好的架構:將資料庫視為真正的服務,提供與程式邏輯分離的業務邏輯服務介面。應用程式不應知悉資料表結構,只透過定義良好的介面(如「取得員工人數」、「調薪」)存取資料。在 32 位元 Windows 上,ActiveX/COM 元件是提供通用介面的主要方式。

Oracle Objects for OLE Code Wizard 簡化開發

Visual Basic 6.0 開發者可使用 Oracle Objects for OLE Code Wizard 自動產生包裝資料庫程式碼的 ActiveX 元件,無需手寫大量 VB 程式碼。

啟用精靈步驟

  1. 若先裝 VB 再裝 Oracle:VB 的 Add-Ins 選單會自動出現精靈。
  2. 若先裝 Oracle 再裝 VB:需手動註冊 DLL:
regsvr32.exe oo4ocodewiz.dll
regsvr32.exe odbtreeview.ocx
regsvr32.exe oo4oaddin.dll

執行後,從 Add-Ins → OO4O Code Wizard For Stored Procedures 啟動。

實作範例:建立員工服務套件與 ActiveX DLL

1. 建立 PL/SQL 套件

-- 套件規格
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;
/

2. 使用精靈產生 ActiveX DLL

  1. 開啟 VB 6.0,建立 ActiveX DLL 專案。
  2. 啟動精靈,登入資料庫,選擇 empsvc 套件。
  3. 精靈自動產生 OO4O 程式碼包裝套件中的函數與程序。
  4. 編譯 DLL,自動在 Windows 註冊為 ActiveX 元件。

任何開發者即可從 OLE 瀏覽器選擇此元件,呼叫 get_count、give_raise 等方法,完全不需知道底層資料表結構。

優勢總結

  • 業務邏輯集中於資料庫層,維護單一來源。
  • ActiveX 元件提供語言中立介面,VB、ASP、C++、Delphi 皆可呼叫。
  • 部署簡單:僅需註冊 DLL,無需發佈資料庫連線字串給所有客戶端。
  • 效能優於直接在應用程式中拼湊 SQL 字串。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved