ヘッダーをスキップ
Oracle® Database PL/SQLパッケージおよびタイプ・リファレンス
11g リリース2(11.2)
B56262-06
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

51 DBMS_DB_VERSION

DBMS_DB_VERSIONパッケージでは、Oracleバージョン番号、およびOracleのバージョンに基づいて条件付きコンパイルを簡単に選択する場合に有効なその他の情報を指定します。


関連項目:

条件付きコンパイルについては、『Oracle Database PL/SQLユーザーズ・ガイドおよびリファレンス』を参照してください。

この章では、次の項目について説明します。


DBMS_DB_VERSIONの使用方法


概要

DBMS_DB_VERSIONパッケージでは、Oracleバージョン番号、およびOracleのバージョンに基づいて条件付きコンパイルを簡単に選択する場合に有効なその他の情報を指定します。

Oracle Database 11g リリース1(11.1)のパッケージを次に示します。

PACKAGE DBMS_DB_VERSION IS
   VERSION CONSTANT PLS_INTEGER := 11; -- RDBMS version number
   RELEASE CONSTANT PLS_INTEGER := 1;  -- 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 := TRUE;
   ver_le_11     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_10TRUEの場合に$ELSIFが評価されないため、このスキームは、バージョン10のデータベースで静的定数VER_LE_11が定義されていない場合でも適用されます。


定数

DBMS_DB_VERSIONパッケージには、異なるリリースのOracle Databaseの定数が含まれます。Oracle Database 11g リリース1(11.1)のDBMS_DB_VERSIONパッケージでは、表51-1に示す定数が使用されます。

表51-1 DBMS_DB_VERSIONの定数

名前 タイプ 説明

VERSION

PLS_INTEGER

10

現行のバージョン

RELEASE

PLS_INTEGER

2

現行のリリース

VER_LE_9

BOOLEAN

FALSE

バージョン9以前

VER_LE_9_1

BOOLEAN

FALSE

バージョン9以前およびリリース1以前

VER_LE_9_2

BOOLEAN

FALSE

バージョン9以前およびリリース2以前

VER_LE_10

BOOLEAN

TRUE

バージョン10以前

VER_LE_10_1

BOOLEAN

FALSE

バージョン10以前およびリリース1以前

VER_LE_10_2

BOOLEAN

TRUE

バージョン10以前およびリリース2以前

VER_LE_11

BOOLEAN

FALSE

バージョン11以前

VER_LE_11_1

BOOLEAN

TRUE

バージョン11以前およびリリース1以前



次の例では、条件付きコンパイルを使用して新機能を保護します。

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;
/