調整數據庫應用程序的一個經驗方法是“80%應用程序,20%數據庫”。意思是說,平均來說,開發人員可以通過修改數據庫參數調整20%的性能問題,通過調整應用程序設計和邏輯調節80%的性能問題。
然而,開發人員首先想到的是按照手冊上的例子開始將數據庫邏輯直接編碼到他們的代碼中。這種做法會帶來很高的維護成本;對數據庫邏輯的一處變動或者切換到一個不同的數據庫驅動就可能需要很多個鐘頭在代碼中修正它。從源代碼調試器外分析性能也變得比較困難。
一個比較好的方法是數據庫服務器看成是一個真正的服務器――這個服務器提供完全與代碼邏輯分離的一組業務邏輯服務。這樣就允許在附加代碼之前在代碼外部測試和維護這些服務。應用程序永遠都不應該知道有這樣一個東西,比如一個 EMP 表,只有這樣才會有某些類型的接口可以被訪問,從而“找出有多少職員”和“給特定的職員加工資”。在32位 Windows 中,為編程語言提供通用接口的主要方法是通過 ActiveX 服務器或 COM 服務器。有一些 DLL 或可執行文件為很多編程環境提供一個接口和一些服務。編寫 ActiveX 組件通常是一個使人畏縮的任務,而且在數據庫接口變化時,該任務可能需要持續的維護。
對於 Visual Basic 6.0 程序員來說,Oracle Objects for OLE Code Wizard for Visual Basic 能夠使這一任務更加簡單。使用這個向導,你可以為開發人員創建一個 ActiveX 組件將數據庫代碼包裝起來――從而不用編寫很多Visual Basic 代碼。
如果在安裝 Oracle 數據庫之前已經安裝了 Visual Basic,那麼你會發現在 Add-Ins 菜單選項中多了一個向導。如果你是安裝 Oracle 數據庫之後才安裝的 Visual Basic,那麼你需要注冊 Code Wizard DLL 去啟用這個菜單特性。從Oracle_HOME/bin 目錄下運行下面這些命令:
regsvr32.exe oo4ocodewiz.dll
regsvr32.exe odbtreevIEw.ocx
regsvr32.exe oo4oaddin.dll
要運行這個向導,從主菜單中選擇 Add-Ins,然後選擇其中的OO4O Code Wizard For Stored Procedures。在第一次運行向導時,它會要求你登錄到一個數據庫。在登錄到數據庫之後,你可以選擇Oracle DB,然後從一個包列表中選擇一個數據庫包。該向導將圍繞你所選擇的包中的函數和過程創建 OO4O 代碼。
例如,我需要為我的數據庫包創建一個 ActiveX DLL 服務器控件。首先,我編寫這個數據庫包來處理我的業務服務:
REM -- create a package to encapsulate business services for employees
create or replace package empsvc
is
function get_count return integer;
procedure give_raise(empno integer,amount number);
end empsvc;
/
show errors;
create or replace package body empsvc
is
function get_count return integer
is
l_count integer;
begin
select count(*) into l_count from emp;
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;
/
show errors;
然後,我進入 Visual Basic 6.0 並創建一個 ActiveX DLL。由於創建的是 ActiveX DLL,所以 Visual Basic 6.0 將自動創建 ActiveX 接口,構建 DLL,並在 Windows 操作系統中注冊它。(任何需要使用我的數據庫包的人都可以簡單地從他們偏愛的 OLE 浏覽器中選擇它。