當一個應用軟體要分發給顧客時——或者甚至是同一個公司的多個地點時——就會出現版本問題。如果所設計的程式要用到Oracle某個特定版本的具體特性時,那麼當在早期的版本中運行時,就會失敗。
檢查版本資訊的一種方法就是選擇動態效能查看錶V$VERSION。它輸出一組標題似的文字,指明Oracle的版本和各種組件的發布層級。但是,要解析這個輸出是非常繁瑣的。
當Oracle 9i Release 2被引入之後,它包括了一個被稱作DBMS_DB_VERSION的新的PL/SQL資料包,使得版本的檢查變得更簡單了。這個資料包中沒有程式或函數,僅有一系列您可以查詢,從而確定當前運行版本有用的常數。
在這個資料包中,最簡單的兩個常數是VERSION和RELEASE。以10gR2為例,在SQL*Plus中執行以下命令,將會返回數字10:
SET SERVEROUT ON
EXEC DBMS_OUTPUT.PUT_LINE (DBMS_DB_VERSION.VERSION);
其他的常數都是邏輯值,它們表明了當前運行版本是否比某個具體的截止版本老,或者是相同的。只需要簡單地測試一下適當的邏輯值,而無需通過提取版本、發布資訊和編寫邏輯來檢查:
BEGIN IF (DBMS_DB_VERSION.VER_LE_9_2) THEN DBMS_OUTPUT.PUT_LINE ('Oracle 10g is required.'); ELSE DBMS_OUTPUT.PUT_LINE ('Version check successful.'); END IF; END; / |
引入這個特性主要是為了在PL/SQL中支援有條件的編輯。以這些常數為基礎,您可以為您的PL/SQL代碼指定不同的資料類型或者避免使用未實現的特性。
作者:Bob Watkins (OCP, MCDBA, MCSE, MCT) is a computer professional with 25 years of experience as a technical trainer, consultant, and database administrator.
(