50 DBMS_DB_VERSION
DBMS_DB_VERSION
パッケージでは、Oracleバージョン番号、およびOracleのバージョンに基づいて条件付きコンパイルを簡単に選択する場合に有効なその他の情報を指定します。
参照:
条件付きコンパイルについては、『Oracle Database PL/SQL言語リファレンス』を参照してください。
50.1 DBMS_DB_VERSIONの概要
DBMS_DB_VERSION
パッケージでは、Oracleバージョン番号、およびOracleのバージョンに基づいて条件付きコンパイルを簡単に選択する場合に有効なその他の情報を指定します。
Oracle Database 12cリリース2バージョンのパッケージを次に示します。
PACKAGE DBMS_DB_VERSION IS VERSION CONSTANT PLS_INTEGER := 12; -- RDBMS version number RELEASE CONSTANT PLS_INTEGER := 2; -- RDBMS release number ver_le_9_1 CONSTANT BOOLEAN := FALSE; ver_le_9_2 CONSTANT BOOLEAN := FALSE; ver_le_9 CONSTANT BOOLEAN := FALSE; ver_le_10_1 CONSTANT BOOLEAN := FALSE; ver_le_10_2 CONSTANT BOOLEAN := FALSE; ver_le_10 CONSTANT BOOLEAN := FALSE; ver_le_11_1 CONSTANT BOOLEAN := FALSE; ver_le_11_2 CONSTANT BOOLEAN := FALSE; ver_le_11 CONSTANT BOOLEAN := FALSE; ver_le_12_1 CONSTANT BOOLEAN := FALSE; ver_le_12_2 CONSTANT BOOLEAN := TRUE; ver_le_12 CONSTANT BOOLEAN := TRUE; END DBMS_DB_VERSION;
ブール定数は、ネーミング規則に従います。各定数によって、ブール式の名前が指定されます。次に例を示します。
-
VER_LE_9_1
は、バージョン9以前およびリリース1以前を表します。 -
VER_LE_10_2
は、バージョン10以前およびリリース2以前を表します。 -
VER_LE_10
は、バージョン10以前を表します。
これらのブール定数の一般的な使用方法は、次のとおりです。
$IF DBMS_DB_VERSION.VER_LE_10 $THEN version 10 and earlier code $ELSIF DBMS_DB_VERSION.VER_LE_11 $THEN version 11 code $ELSE version 12 and later code $END
このコード構造は、バージョン12のコードへの参照を保護します。また、バージョン10でのプログラムのコンパイル時に、制御パッケージ定数DBMS_DB_VERSION
.VER_LE_11
が参照されないようにします。同様の動作がバージョン11にも適用されます。条件付きコンパイルでは、DBMS_DB_VERSION
.VER_LE_10
がTRUE
の場合に$ELSIF
が評価されないため、このスキームは、バージョン10のデータベースで静的定数VER_LE_11
が定義されていない場合でも適用されます。
50.2 DBMS_DB_VERSIONの定数
DBMS_DB_VERSION
パッケージには、異なるリリースのOracle Databaseの定数が含まれます。
Oracle Database 12cリリース2バージョンのDBMS_DB_VERSION
パッケージでは、次の表に示す定数が使用されます。
表50-1 DBMS_DB_VERSIONの定数
名前 | タイプ | 値 | 説明 |
---|---|---|---|
|
|
12 |
現行のバージョン |
|
|
2 |
現行のリリース |
|
|
|
バージョン9以前 |
|
|
|
バージョン9以前およびリリース1以前 |
|
|
|
バージョン9以前およびリリース2以前 |
|
|
|
バージョン10以前 |
|
|
|
バージョン10以前およびリリース1以前 |
|
|
|
バージョン10以前およびリリース2以前 |
|
|
|
バージョン11以前 |
|
|
|
バージョン11以前およびリリース1以前 |
|
|
|
バージョン11以前およびリリース2以前 |
|
|
|
バージョン12以前およびリリース1以前 |
|
|
|
バージョン12以前およびリリース2以前 |
|
|
|
バージョン12以前 |
50.3 DBMS_DB_VERSIONの例
次の例では、条件付きコンパイルを使用して新機能を保護します。
CREATE OR REPLACE PROCEDURE whetstone IS -- Notice that conditional compilation constructs -- can interrupt a regular PL/SQL statement. -- You can locate a conditional compilation directive anywhere -- there is whitespace in the regular statement. SUBTYPE my_real IS $IF DBMS_DB_VERSION.VER_LE_9 $THEN NUMBER $ELSE BINARY_DOUBLE $END; t CONSTANT my_real := $IF DBMS_DB_VERSION.VER_LE_9 $THEN 0.499975 $ELSE 0.499975d $END; t2 CONSTANT my_real := $if DBMS_DB_VERSION.VER_LE_9 $THEN 2.0 $ELSE 2.0d $END; x CONSTANT my_real := $IF DBMS_DB_VERSION.VER_LE_9 $THEN 1.0 $ELSE 1.0d $END; y CONSTANT my_real := $IF DBMS_DB_VERSION.VER_LE_9 $THEN 1.0 $ELSE 1.0d $END; z MY_REAL; PROCEDURE P(x IN my_real, y IN my_real, z OUT NOCOPY my_real) IS x1 my_real; y1 my_real; BEGIN x1 := x; y1 := y; x1 := t * (x1 + y1); y1 := t * (x1 + y1); z := (x1 + y1)/t2; END P; BEGIN P(x, y, z); DBMS_OUTPUT.PUT_LINE ('z = '|| z); END whetstone; /