137 DBMS_PLSQL_CODE_COVERAGE

DBMS_PLSQL_CODE_COVERAGEパッケージは、基本ブロック・レベルでPL/SQLアプリケーションのコード・カバレッジ・データを収集するためのインタフェースを提供します。

137.1 DBMS_PLSQL_CODE_COVERAGEの概要

DBMS_PLSQL_CODE_COVERAGEパッケージは、基本ブロック・レベルでPL/SQLアプリケーションのコード・カバレッジ情報を収集するためのインタフェースを提供します。基本ブロックとは、PL/SQLコードの入口が1箇所で出口が1箇所のブロックのことです。PL/SQLの開発者は、テスト・インフラストラクチャでコードがどの程度実行されるか確認する必要があります。カバレッジ表は、CREATE_COVERAGE_TABLESプロシージャを使用して作成します。

一般的なコード・カバレッジは、次へのコールを含むセッションで実行されます。

  • START_COVERAGE

  • PL/SQLコードの実行

  • STOP_COVERAGE

GET_BLOCK_MAPファンクションは、合計カバレッジの計算に役立ちます。

参照:

137.2 DBMS_PLSQL_CODE_COVERAGEのセキュリティ・モデル

ユーザーは、DBMS_PLSQL_CODE_COVERAGEパッケージに対するEXECUTE権限を持っている必要があります。

ユーザーは、このユニットに関するカバレッジ情報を収集するユニットに対するCREATE権限を持っている必要があります。

PL/SQL基本ブロック・カバレッジ・データは、プログラム・ユニットでINTERPRETEDコンパイル(パラメータ・セットPLSQL_CODE_TYPE =INTERPRETED)が使用されるときに収集されます。PL/SQL基本ブロック・カバレッジ・データは、プログラム・ユニットでNATIVEコンパイルが使用されるときは収集されません。NATIVEコンパイラは、パラメータPLSQL_OPTIMIZE_LEVEL <= 1を設定することにより無効にできます。コンパイル・モードに関係なく、ラップされたユニットのカバレッジ・データは収集されません。

137.3 DBMS_PLSQL_CODE_COVERAGEの定数

DBMS_PLSQL_CODE_COVERAGEパッケージは、GET_BLOCK_MAPファンクションのnamespaceパラメータで使用される定数を提供します。

これらの定数を、次の表に示します。

表137-1 DBMS_PLSQL_CODE_COVERAGEの定数

名前 タイプ 説明

function_namespace

NUMBER

1

ファンクション・ネームスペースを指定します

package_spec_namespace

NUMBER

1

パッケージ仕様ネームスペースを指定します

package_body_namespace

NUMBER

2

パッケージ定義(本体)ネームスペースを指定します

procedure_namespace

NUMBER

1

プロシージャ・ネームスペースを指定します

trigger_namespace

NUMBER

3

トリガー・ネームスペースを指定します

type_spec_namespace

NUMBER

1

タイプ仕様ネームスペースを指定します

type_body_namespace

NUMBER

2

タイプ定義(本体)ネームスペースを指定します

137.4 DBMS_PLSQL_CODE_COVERAGEのデータ構造

レコード・タイプ

表タイプ

137.4.1 MAP_RECレコード・タイプ

MAP_RECレコード・タイプは、ソース・コード内のPL/SQL基本ブロックの場所を定義します。

構文

TYPE map_rec IS RECORD (
    procedure_name VARCHAR2(32767),
    block_num      NUMBER,
    line           NUMBER,
    col            NUMBER,
    not_feasible   NUMBER);
  

フィールド

表137-2 MAP_RECのフィールド

フィールド 説明

procedure_name

基本ブロックを含むプロシージャの名前

block_num

基本ブロックを識別します

line

基本ブロックの先頭行

col

基本ブロックの先頭列

not_feasible

基本ブロックのNot_feasibleマーキング

137.4.2 T_MAP_REC表タイプ

T_MAP_REC表タイプは、ユニット内のPL/SQL基本ブロックの収集を指定します。

構文

TYPE t_map_rec IS TABLE OF map_rec;

137.5 DBMS_PLSQL_CODE_COVERAGEサブプログラムの要約

この表は、DBMS_PLSQL_CODE_COVERAGEサブプログラムを示し、簡単に説明しています。

表137-3 DBMS_PLSQL_CODE_COVERAGEパッケージのサブプログラム

サブプログラム 説明

CREATE_COVERAGE_TABLESプロシージャ

カバレッジ表を作成します。

GET_BLOCK_MAPファンクション 基本ブロックとPL/SQLソースのマッピングを取得します  

START_COVERAGEファンクション

ユーザーのセッションでカバレッジ・データの収集を開始し、RUN_IDを戻します。

STOP_COVERAGEプロシージャ

現在のカバレッジの実行を終了します。

137.5.1 CREATE_COVERAGE_TABLESプロシージャ

このプロシージャは、カバレッジ・データの収集に使用する表を作成します。

構文

DBMS_PLSQL_CODE_COVERAGE.CREATE_COVERAGE_TABLES (
   FORCE_IT     IN BOOLEAN DEFAULT FALSE);

パラメータ

パラメータ 説明

FORCE_IT

デフォルトでは、カバレッジ表がすでに存在する場合、エラーになります。TRUEに設定すると、表がすでに存在する場合、表はサイレントに削除され、新しい表が作成されます。

例外

表137-4 CREATE_COVERAGE_TABLESの例外

例外 説明
COVERAGE_ERROR

FORCE_ITパラメータはFALSEで、表がすでに存在します。

137.5.2 GET_BLOCK_MAPファンクション

このファンクションは、基本ブロックとPL/SQLソースのマッピングを取得します。

構文

DBMS_PLSQL_CODE_COVERAGE.GET_BLOCK_MAP(
                       unit_owner IN VARCHAR2,
                       unit_name  IN VARCHAR2,
                       namespace  IN POSITIVE)
  RETURN T_MAP_REC;

表137-5 パラメータ

パラメータ 説明

unit_owner

ユニットの所有者。ユニットの所有者では、大文字と小文字は区別されません。unit_ownerが空またはNULLの場合、デフォルトは現在のスキーマです。

unit_name

マッピングを取得するユニット。unit_nameでは、大文字と小文字は区別されません。

namespace

このunit_nameが解決されるネームスペース。有効なネームスペース値のリストは、DBMS_PLSQL_CODE_COVERAGEの定数を参照してください。

137.5.3 START_COVERAGEファンクション

このファンクションは、ユーザーのセッションでカバレッジ・データの収集を開始し、実行の一意の識別子RUN_IDを戻します。

構文

DBMS_PLSQL_CODE_COVERAGE.START_COVERAGE (
   run_comment   IN VARCHAR2) 
   RETURN NUMBER;

パラメータ

パラメータ 説明

run_comment

ユーザーは実行に名前を付け、テストを識別できます。

137.5.4 STOP_COVERAGEプロシージャ

このプロシージャは、現在のカバレッジの実行を終了します。

構文

DBMS_PLSQL_CODE_COVERAGE.STOP_COVERAGE;

例外

表137-6 STOP_COVERAGEの例外

例外 説明
COVERAGE_ERROR

カバレッジ表が存在しない場合、エラーになります。