141 DBMS_RULE_ADM

DBMS_RULE_ADMパッケージは、ルール、ルール・セットおよびルール評価コンテキストを作成および管理するためのサブプログラムを提供します。

この章のトピックは、次のとおりです:

141.1 DBMS_RULE_ADMの概要

このパッケージは、ルール、ルール・セットおよびルール評価コンテキストを作成および管理するためのサブプログラムを提供します。

参照:

141.2 DBMS_RULE_ADMのセキュリティ・モデル

PUBLICには、このパッケージのEXECUTE権限が付与されます。

参照:

ユーザー・グループPUBLICの詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

141.3 DBMS_RULE_ADMサブプログラムの要約

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

表141-1 DBMS_RULE_ADMパッケージのサブプログラム

サブプログラム 説明

ADD_RULEプロシージャ

指定のルールを指定のルール・セットに追加します。

ALTER_EVALUATION_CONTEXTプロシージャ

ルール評価コンテキストを変更します。

ALTER_RULEプロシージャ

指定したルールの1つ以上の要素を変更します。

CREATE_EVALUATION_CONTEXTプロシージャ

ルール評価コンテキストを作成します。

CREATE_RULEプロシージャ

ルールを指定の名前で作成します。

CREATE_RULE_SETプロシージャ

ルール・セットを指定の名前で作成します。

DROP_EVALUATION_CONTEXTプロシージャ

指定した名前のルール評価コンテキストを削除します。

DROP_RULEプロシージャ

指定した名前のルールを削除します。

DROP_RULE_SETプロシージャ

指定した名前のルール・セットを削除します。

GRANT_OBJECT_PRIVILEGEプロシージャ

指定オブジェクトに関する指定オブジェクト権限を指定のユーザーまたはロールに付与します。

GRANT_SYSTEM_PRIVILEGEプロシージャ

指定のシステム権限を指定のユーザーまたはロールに付与します。

REMOVE_RULEプロシージャ

指定のルールを指定のルール・セットから削除します。

REVOKE_OBJECT_PRIVILEGEプロシージャ

指定オブジェクトに関する指定オブジェクト権限を指定のユーザーまたはロールから取り消します。

REVOKE_SYSTEM_PRIVILEGEプロシージャ

指定のシステム権限を指定のユーザーまたはロールから取り消します。

注意:

特に指定がないかぎり、すべてのサブプログラムがコミットされます。

141.3.1 ADD_RULEプロシージャ

このプロシージャは、指定のルールを指定のルール・セットに追加します。

構文

DBMS_RULE_ADM.ADD_RULE(
   rule_name           IN  VARCHAR2,
   rule_set_name       IN  VARCHAR2,
   evaluation_context  IN  VARCHAR2   DEFAULT NULL,
   rule_comment        IN  VARCHAR2   DEFAULT NULL);

パラメータ

表141-2 ADD_RULEプロシージャのパラメータ

パラメータ 説明

rule_name

ルール・セットに追加するルールの名前で、[schema_name.]rule_nameの形式で指定します。たとえばhrスキーマにall_aという名前のルールを追加するには、このパラメータにhr.all_aを入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

rule_set_name

ルール・セットに追加するルール・セットの名前で、[schema_name.]rule_set_nameの形式で指定します。たとえばhrスキーマのapply_rulesという名前のルール・セットにルールを追加するには、このパラメータにhr.apply_rulesを入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

evaluation_context

[schema_name.]evaluation_context_nameの形式で指定する、評価コンテキスト名。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

評価コンテキストを指定するのは、ルール自体に評価コンテキストがなく、ルール・セットの評価コンテキストをルールに使用しない場合のみです。

rule_comment

ルールの説明(オプション)。ルールをルール・セットに追加する理由などを指定できます。

使用上の注意

このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。

  • ルール・セットに対するALTER_ON_RULE_SET権限があること。

  • ALTER_ANY_RULE_SETシステム権限があること。

  • ルール・セットの所有者であること。

また、ルール・セットの所有者は、次の要件を最低1つ満たす必要があります。

  • ルールに対するEXECUTE_ON_RULE権限があること。

  • EXECUTE_ANY_RULEシステム権限があること。

  • ルールの所有者であること。

このプロシージャの実行時に、ルールに評価コンテキストがなく、評価コンテキストが未指定の場合、そのルールで使用されるのは、ルール・セットに関連付けられている評価コンテキストです。このような場合は、評価コンテキストを使用するルールがアクセスするベース・オブジェクトすべてについて、ルール所有者に必要な権限が付与されている必要があります。

評価コンテキストが指定されている場合、ルール・セットの所有者は、次の要件を最低1つ満たす必要があります。

  • 評価コンテキストに関するEXECUTE_ON_EVALUATION_CONTEXT権限があること。

  • EXECUTE_ANY_EVALUATION_CONTEXTシステム権限があり、評価コンテキストの所有者がSYSではないこと。

  • 評価コンテキストの所有者であること。

さらに、評価コンテキストを使用するルールがアクセスするベース・オブジェクトすべてについて、必要な権限がルール所有者に付与されている必要があります。

141.3.2 ALTER_EVALUATION_CONTEXTプロシージャ

このプロシージャは、ルール評価コンテキストを変更します。ルール評価コンテキストは、ルール条件の中で参照できる外部データを定義します。外部データは、変数または表データの場合があります。

構文

DBMS_RULE_ADM.ALTER_EVALUATION_CONTEXT(
  evaluation_context_name      IN  VARCHAR2,
  table_aliases                IN  SYS.RE$TABLE_ALIAS_LIST    DEFAULT NULL,
  remove_table_aliases         IN  BOOLEAN                    DEFAULT FALSE,
  variable_types               IN  SYS.RE$VARIABLE_TYPE_LIST  DEFAULT NULL,
  remove_variable_types        IN  BOOLEAN                    DEFAULT FALSE,
  evaluation_function          IN  VARCHAR2                   DEFAULT NULL,
  remove_evaluation_function   IN  BOOLEAN                    DEFAULT FALSE,
  evaluation_context_comment   IN  VARCHAR2                   DEFAULT NULL,
  remove_eval_context_comment  IN  BOOLEAN                    DEFAULT FALSE);

パラメータ

表141-3 ALTER_EVALUATION_CONTEXTプロシージャのパラメータ

パラメータ 説明

evaluation_context_name

変更する評価コンテキストの名前。[schema_name.]evaluation_context_nameの形式で指定します。

たとえば、hrスキーマのdept_eval_contextという名前の評価コンテキストを変更するには、このパラメータにhr.dept_eval_contextを入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

table_aliases

remove_table_aliasesFALSEの場合にNULLに設定すると、既存の表の別名が保持されます。remove_table_aliasesTRUEの場合にNULLに設定すると、既存の表の別名が削除されます。

NULL以外に設定すると、評価コンテキスト用の既存の表の別名が、指定した表の別名に置き換えられます。

表の別名によって、評価コンテキストに表を指定します。表の別名は、ルール条件の表を参照するために使用されます。

remove_table_aliases

table_aliasesNULLの場合にTRUEに設定すると、評価コンテキスト用の既存の表の別名が削除されます。table_aliasesNULL以外の場合にTRUEに設定すると、エラーが発生します。

FALSEに設定すると、表の別名は削除されません。

variable_types

remove_variable_typesFALSEの場合にNULLに設定すると、変数タイプが保持されます。remove_variable_typesTRUEの場合にNULLに設定すると、既存の変数タイプが削除されます。

NULL以外に設定すると、評価コンテキスト用の既存の変数タイプが、指定した変数タイプに置き換えられます。

remove_variable_types

variable_typesNULLの場合にTRUEに設定すると、評価コンテキスト用の既存の変数タイプが削除されます。variable_typesNULL以外の場合にTRUEに設定すると、エラーが発生します。

FALSEに設定すると、変数タイプは削除されません。

evaluation_function

remove_evaluation_functionFALSEの場合にNULLに設定すると、既存の評価ファンクションが保持されます。remove_evaluation_functionTRUEの場合にNULLに設定すると、既存の評価ファンクションが削除されます。

NULL以外に設定すると、評価コンテキスト用の既存の評価ファンクションが、指定した評価ファンクションに置き換えられます。

評価ファンクションは、評価コンテキストを使用しているルールを評価するためにコールされるオプションのファンクションです。DBMS_RULE.EVALUATEプロシージャと同じ形式が必要です。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

評価ファンクションの詳細は、CREATE_EVALUATION_CONTEXTプロシージャを参照してください。

remove_evaluation_function

evaluation_functionNULLの場合にTRUEに設定すると、評価コンテキスト用の既存の評価ファンクションが削除されます。evaluation_functionNULL以外の場合にTRUEに設定すると、エラーが発生します。

FALSEに設定すると、評価ファンクションは削除されません。

evaluation_context_comment

remove_eval_context_commentFALSEの場合にNULLに設定すると、既存の評価コンテキスト・コメントが保持されます。remove_evaluation_functionTRUEの場合にNULLに設定すると、既存の評価コンテキスト・コメントが削除されます。

NULL以外に設定すると、評価コンテキスト用の既存のコメントが、指定したコメントに置き換えられます。

評価コンテキスト・コメントは、ルール評価コンテキストに関する説明(オプション)です。

remove_eval_context_comment

evaluation_context_commentNULLの場合にTRUEに設定すると、評価コンテキスト用の既存のコメントが削除されます。evaluation_context_commentNULL以外の場合にTRUEに設定すると、エラーが発生します。

FALSEに設定すると、評価コンテキスト・コメントは削除されません。

使用上の注意

このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。

  • 変更する評価コンテキストの所有者であること。

  • 別のユーザーが所有する評価コンテキストに対するALL_ON_EVALUATION_CONTEXTまたはALTER_ON_EVALUATION_CONTEXTオブジェクト権限があること。

  • ALTER_ANY_EVALUATION_CONTEXTシステム権限があること。

    参照:

    DBMS_RULE_ADMパッケージで使用されるルール・タイプの詳細は、「ルール・タイプ」を参照してください。

141.3.3 ALTER_RULEプロシージャ

このプロシージャは、指定したルールの1つ以上の要素を変更します。

構文

DBMS_RULE_ADM.ALTER_RULE(
   rule_name                  IN  VARCHAR2,
   condition                  IN  VARCHAR2        DEFAULT NULL,
   evaluation_context         IN  VARCHAR2        DEFAULT NULL,
   remove_evaluation_context  IN  BOOLEAN         DEFAULT FALSE,
   action_context             IN  SYS.RE$NV_LIST  DEFAULT NULL,
   remove_action_context      IN  BOOLEAN         DEFAULT FALSE,
   rule_comment               IN  VARCHAR2        DEFAULT NULL,
   remove_rule_comment        IN  BOOLEAN         DEFAULT FALSE); 

パラメータ

表141-4 ALTER_RULEプロシージャのパラメータ

パラメータ 説明

rule_name

変更するルールの名前で、[schema_name.]rule_nameの形式で指定します。たとえばhrスキーマのall_aという名前のルールを変更するには、このパラメータにhr.all_aを入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

condition

ルールに関連付ける条件。

NULL以外に設定すると、既存のルール条件が、指定した条件に置き換えられます。

evaluation_context

[schema_name.]evaluation_context_nameの形式で指定する、評価コンテキスト名。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

NULL以外に設定すると、既存のルールの評価コンテキストが、指定した評価コンテキストに置き換えられます。

remove_evaluation_context

TRUEに設定すると、ルールの評価コンテキストがNULLに設定され、ルールから評価コンテキストが事実上削除されます。

FALSEに設定すると、指定したルールの評価コンテキストが保持されます。

evaluation_contextパラメータがNULL以外の場合、このパラメータはFALSEに設定してください。

action_context

NULL以外に設定すると、ルールに関連付けられているアクション・コンテキストが変更されます。ルールのアクション・コンテキストは、ルールの評価時に、ルール・エンジンのクライアントが解析するルールに関連付けられている情報です。

remove_action_context

TRUEに設定すると、ルールのアクション・コンテキストがNULLに設定され、ルールからアクション・コンテキストが事実上削除されます。

FALSEに設定すると、指定したルールのアクション・コンテキストが保持されます。

action_contextパラメータがNULL以外の場合、このパラメータはFALSEに設定してください。

rule_comment

NULL以外に設定すると、ルールの既存のコメントが、指定したコメントに置き換えられます。

remove_rule_comment

TRUEに設定すると、ルールのコメントがNULLに設定され、ルールからコメントが事実上削除されます。

FALSEに設定すると、指定したルールのコメントが保持されます。

rule_commentパラメータがNULL以外の場合、このパラメータはFALSEに設定してください。

使用上の注意

このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。

  • ルールに対するALTER_ON_RULE権限があること。

  • ALTER_ANY_RULEシステム権限があること。

  • 変更するルールの所有者であること。

評価コンテキストが指定されている場合、ルール所有者は、次の要件を最低1つ満たす必要があります。

  • 評価コンテキストに関するEXECUTE_ON_EVALUATION_CONTEXT権限があること。

  • EXECUTE_ANY_EVALUATION_CONTEXTシステム権限があり、評価コンテキストの所有者がSYSではないこと。

  • 評価コンテキストの所有者であること。

さらに、評価コンテキストを使用するルールがアクセスするベース・オブジェクトすべてについて、必要な権限がルール所有者に付与されている必要があります。

参照:

DBMS_RULE_ADMパッケージで使用されるルール・タイプの詳細は、「ルール・タイプ」を参照してください。

141.3.4 CREATE_EVALUATION_CONTEXTプロシージャ

このプロシージャは、ルール評価コンテキストを作成します。ルール評価コンテキストは、ルール条件の中で参照できる外部データを定義します。外部データは、変数または表データの場合があります。

構文

DBMS_RULE_ADM.CREATE_EVALUATION_CONTEXT(
  evaluation_context_name      IN  VARCHAR2,
  table_aliases                IN  SYS.RE$TABLE_ALIAS_LIST    DEFAULT NULL,
  variable_types               IN  SYS.RE$VARIABLE_TYPE_LIST  DEFAULT NULL,
  evaluation_function          IN  VARCHAR2                   DEFAULT NULL,
  evaluation_context_comment   IN  VARCHAR2                   DEFAULT NULL);

パラメータ

表141-5 CREATE_EVALUATION_CONTEXTプロシージャのパラメータ

パラメータ 説明

evaluation_context_name

作成する評価コンテキストの名前。[schema_name.]evaluation_context_nameの形式で指定します。

たとえば、hrスキーマにdept_eval_contextという名前の評価コンテキストを作成するには、このパラメータにhr.dept_eval_contextを入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

table_aliases

評価コンテキストに表を指定する表の別名。表の別名は、ルール条件の表を参照するために使用されます。

variable_types

評価コンテキストに使用する変数のリスト。

evaluation_function

評価コンテキストを使用しているルールを評価するためにコールされる、オプションのファンクション。DBMS_RULE.EVALUATEプロシージャと同じ形式が必要です。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

評価ファンクションの詳細は、「使用上の注意」を参照してください。

evaluation_context_comment

ルール評価コンテキストに関する説明(オプション)。

使用上の注意

このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。

  • 作成する評価コンテキストの所有者であり、CREATE_EVALUATION_CONTEXT_OBJシステム権限があること。

  • CREATE_ANY_EVALUATION_CONTEXTシステム権限があること。

    参照:

    DBMS_RULE_ADMパッケージで使用されるルール・タイプの詳細は、「ルール・タイプ」を参照してください。

評価ファンクションには、次の署名が必要です。

FUNCTION evaluation_function_name(
  rule_set_name       IN   VARCHAR2,
  evaluation_context  IN   VARCHAR2,
  event_context       IN   SYS.RE$NV_LIST               DEFAULT NULL,
  table_values        IN   SYS.RE$TABLE_VALUE_LIST      DEFAULT NULL,
  column_values       IN   SYS.RE$COLUMN_VALUE_LIST     DEFAULT NULL,
  variable_values     IN   SYS.RE$VARIABLE_VALUE_LIST   DEFAULT NULL,
  attribute_values    IN   SYS.RE$ATTRIBUTE_VALUE_LIST  DEFAULT NULL,
  stop_on_first_hit   IN   BOOLEAN                      DEFAULT FALSE,
  simple_rules_only   IN   BOOLEAN                      DEFAULT FALSE,
  true_rules          OUT  SYS.RE$RULE_HIT_LIST,
  maybe_rules         OUT  SYS.RE$RULE_HIT_LIST);
RETURN BINARY_INTEGER;

注意:

各パラメータは必須で、指定のデータ・タイプであることが必要です。ただし、パラメータの名前は変更できます。

ファンクションの戻り値は、次のいずれか1つです。

  • DBMS_RULE_ADM.EVALUATION_SUCCESS: ユーザーによって指定された評価ファンクションが、ルール・セットの評価を正常終了しました。ルール・エンジンは、評価ファンクションによって取得された評価結果をDBMS_RULE.EVALUATEプロシージャを使用してルール・エンジン・クライアントに戻します。

  • DBMS_RULE_ADM.EVALUATION_CONTINUE: ルール・エンジンは、評価ファンクションが存在しない場合と同様にルール・セットを評価します。評価ファンクションは使用されず、評価ファンクションによって戻される結果はすべて無視されます。

  • DBMS_RULE_ADM.EVALUATION_FAILURE: ユーザーが指定した評価ファンクションは失敗しました。ルール・セットの評価は停止し、エラーになります。

141.3.5 CREATE_RULEプロシージャ

このプロシージャは、ルールを作成します。

構文

DBMS_RULE_ADM.CREATE_RULE(
   rule_name           IN  VARCHAR2,
   condition           IN  VARCHAR2,
   evaluation_context  IN  VARCHAR2        DEFAULT NULL,
   action_context      IN  SYS.RE$NV_LIST  DEFAULT NULL,
   rule_comment        IN  VARCHAR2        DEFAULT NULL);

パラメータ

表141-6 CREATE_RULEプロシージャのパラメータ

パラメータ 説明

rule_name

作成するルールの名前で、[schema_name.]rule_nameの形式で指定します。たとえばhrスキーマにall_aという名前のルールを作成するには、このパラメータにhr.all_aを入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

condition

ルールに関連付ける条件。条件はTRUEまたはFALSEに評価され、SELECT文のWHERE句で使用可能な条件であれば使用できます。たとえば次は、有効なルール条件です。

department_id = 30

ルール条件のテキストの大文字と小文字が正しく使用されていることを確認してください。

注意: 条件に「WHERE」という語句は指定しないでください。

evaluation_context

ルールに関連付けられ、[schema_name.]evaluation_context_nameの形式で指定する、オプションの評価コンテキスト名。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

evaluation_contextが未指定の場合は、ルール・セットの評価コンテキストがルールに継承されます。

action_context

ルールに関連付けるアクション・コンテキスト。ルールのアクション・コンテキストは、ルールの評価時に、ルール・エンジンのクライアントが解析するルールに関連付けられている情報です。

rule_comment

ルールに関する説明(オプション)。

使用上の注意

このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。

  • 作成するルールの所有者であり、CREATE_RULE_OBJシステム権限があること。

  • CREATE_ANY_RULEシステム権限があること。

評価コンテキストが指定されている場合、ルール所有者は、次の要件を最低1つ満たす必要があります。

  • 評価コンテキストに関するEXECUTE_ON_EVALUATION_CONTEXT権限があること。

  • EXECUTE_ANY_EVALUATION_CONTEXTシステム権限があり、評価コンテキストの所有者がSYSではないこと。

  • 評価コンテキストの所有者であること。

さらに、評価コンテキストを使用するルールがアクセスするベース・オブジェクトすべてについて、必要な権限がルール所有者に付与されている必要があります。

参照:

DBMS_RULE_ADMパッケージで使用されるルール・タイプの詳細は、「ルール・タイプ」を参照してください。

141.3.6 CREATE_RULE_SETプロシージャ

このプロシージャは、ルール・セットを作成します。

構文

DBMS_RULE_ADM.CREATE_RULE_SET(
   rule_set_name       IN  VARCHAR2,
   evaluation_context  IN  VARCHAR2  DEFAULT NULL,
   rule_set_comment    IN  VARCHAR2  DEFAULT NULL);

パラメータ

表141-7 CREATE_RULE_SETプロシージャのパラメータ

パラメータ 説明

rule_set_name

作成するルール・セットの名前で、[schema_name.]rule_set_nameの形式で指定します。たとえばhrスキーマにapply_rulesという名前のルール・セットを作成するには、このパラメータにhr.apply_rulesを入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

evaluation_context

オプションの評価コンテキスト名で、[schema_name.]evaluation_context_nameの形式で指定し、この評価コンテキスト名は、評価コンテキストが明示的に関連付けられていないルール・セットのすべてのルールに適用されます。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

rule_set_comment

ルール・セットに関する説明(オプション)。

使用上の注意

このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。

  • 作成するルール・セットの所有者であり、CREATE_RULE_SET_OBJシステム権限があること。

  • CREATE_ANY_RULE_SETシステム権限があること。

評価コンテキストが指定されている場合、ルール・セットの所有者は、次の要件を最低1つ満たす必要があります。

  • 評価コンテキストに関するEXECUTE_ON_EVALUATION_CONTEXT権限があること。

  • EXECUTE_ANY_EVALUATION_CONTEXTシステム権限があり、評価コンテキストの所有者がSYSではないこと。

  • 評価コンテキストの所有者であること。

141.3.7 DROP_EVALUATION_CONTEXTプロシージャ

このプロシージャは、ルール評価コンテキストを削除します。

構文

DBMS_RULE_ADM.DROP_EVALUATION_CONTEXT(
   evaluation_context_name  IN  VARCHAR2,
   force                    IN  BOOLEAN   DEFAULT FALSE);

パラメータ

表141-8 DROP_EVALUATION_CONTEXTプロシージャのパラメータ

パラメータ 説明

evaluation_context_name

削除する評価コンテキストの名前。[schema_name.]evaluation_context_nameの形式で指定します。

たとえば、hrスキーマのdept_eval_contextという名前の評価コンテキストを削除するには、このパラメータにhr.dept_eval_contextを入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

force

TRUEに設定すると、ルール評価コンテキストを使用するすべてのルールおよびルール・セットからルール評価コンテキストが削除されます。

ルール評価コンテキストを使用するルールまたはルール・セットがない場合にFALSEに設定すると、ルール評価コンテキストが削除されます。

ルール評価コンテキストを使用するルールまたはルール・セットが1つ以上ある場合にFALSEに設定すると、例外が発生します。

注意: forceTRUEに設定すると、評価コンテキストが設定されていないルールまたはルール・セットが存在することになります。ルールまたはルール・セットに評価コンテキストが未指定で、ADD_RULEプロシージャによる評価コンテキストの指定がない場合、ルールの評価はできません。

使用上の注意

このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。

  • 評価コンテキストの所有者であること。

  • DROP_ANY_EVALUATION_CONTEXTシステム権限があること。

141.3.8 DROP_RULEプロシージャ

このプロシージャは、ルールを削除します。

構文

DBMS_RULE_ADM.DROP_RULE(
   rule_name  IN  VARCHAR2,
   force      IN  BOOLEAN   DEFAULT FALSE);

パラメータ

表141-9 DROP_RULEプロシージャのパラメータ

パラメータ 説明

rule_name

削除するルールの名前で、[schema_name.]rule_nameの形式で指定します。たとえばhrスキーマのall_aという名前のルールを削除するには、このパラメータにhr.all_aを入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

force

TRUEに設定すると、このルールが含まれているすべてのルール・セットからルールが削除されます。

このルールが含まれているルール・セットがない場合にFALSEに設定すると、ルールが削除されます。

このルールを含むルール・セットが1つ以上ある場合にFALSEに設定すると、例外が発生します。

使用上の注意

このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。

  • ルールの所有者であること。

  • DROP_ANY_RULEシステム権限があること。

    注意:

    • データベースからルールを削除せずに、ルール・セットからルールを削除するには、REMOVE_RULEプロシージャを使用します。

    • ルールに関連付けられているルール評価コンテキストは、このプロシージャを実行しても削除されません。

141.3.9 DROP_RULE_SETプロシージャ

このプロシージャは、ルール・セットを削除します。

構文

DBMS_RULE_ADM.DROP_RULE_SET(
   rule_set_name  IN  VARCHAR2,
   delete_rules   IN  BOOLEAN   DEFAULT FALSE);

パラメータ

表141-10 DROP_RULE_SETプロシージャのパラメータ

パラメータ 説明

rule_set_name

削除するルール・セットの名前で、[schema_name.]rule_set_nameの形式で指定します。たとえばhrスキーマのapply_rulesという名前のルール・セットを削除するには、このパラメータにhr.apply_rulesを入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

delete_rules

TRUEに設定すると、ルール・セット内にあるすべてのルールが削除されます。ルール・セット内のルールが別のルール・セットのルールでもある場合、そのルールは削除されません。

FALSEに設定すると、ルール・セット内にあるルールは削除されません。

使用上の注意

このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。

  • DROP_ANY_RULE_SETシステム権限があること。

  • ルール・セットの所有者であること。

    注意:

    ルール・セットに関連付けられているルール評価コンテキストは、このプロシージャを実行しても削除されません。

141.3.10 GRANT_OBJECT_PRIVILEGEプロシージャ

このプロシージャは、指定オブジェクトに関する指定のオブジェクト権限を、指定のユーザーまたはロールに付与します。オブジェクトを所有しているユーザーには、そのオブジェクトに関するすべての権限および付与オプションが自動的に付与されます。

構文

DBMS_RULE_ADM.GRANT_OBJECT_PRIVILEGE(
   privilege     IN  BINARY_INTEGER,
   object_name   IN  VARCHAR2,
   grantee       IN  VARCHAR2,
   grant_option  IN  BOOLEAN   DEFAULT FALSE);

パラメータ

表141-11 GRANT_OBJECT_PRIVILEGEプロシージャのパラメータ

パラメータ 説明

privilege

オブジェクトの権限受領者に付与するオブジェクト権限の名前。使用可能なオブジェクト権限は、「使用上の注意」を参照してください。

object_name

権限受領者に権限を付与するオブジェクトの名前で、[schema_name.]object_nameの形式で指定します。たとえばhrスキーマのapply_rulesという名前のルール・セットに権限を付与するには、このパラメータにhr.apply_rulesを入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。オブジェクトは、既存のルール、ルール・セットまたは評価コンテキストであることが必要です。

grantee

権限を付与するユーザーまたはロールの名前。オブジェクトの所有者を指定することはできません。

grant_option

TRUEに設定すると、指定ユーザーまたは指定の権限を付与されたユーザーは、この権限を他のユーザーに付与できます。

FALSEに設定すると、指定ユーザーまたは指定の権限を付与されたユーザーは、この権限を他のユーザーに付与できません。

使用上の注意

このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。

  • 権限を付与するオブジェクトの所有者であること。

  • 付与する権限と同じ権限および付与オプションがあること。

さらに、オブジェクトがルール・セットの場合は、ルール・セット内のすべてのルールに対するEXECUTE権限および付与オプションがあるか、またはルール・セット内のルールを所有していることが必要です。

表141-12に、オブジェクト権限を示します。

表141-12 評価コンテキスト、ルールおよびルール・セットに関するオブジェクト権限

権限 説明

SYS.DBMS_RULE_ADM.ALL_ON_EVALUATION_CONTEXT

他のユーザーのスキーマにある特定の評価コンテキストを変更および実行する権限。

SYS.DBMS_RULE_ADM.ALL_ON_RULE

他のユーザーのスキーマにある特定のルールを変更および実行する権限。

SYS.DBMS_RULE_ADM.ALL_ON_RULE_SET

他のユーザーのスキーマにある特定のルール・セットを変更および実行する権限。

SYS.DBMS_RULE_ADM.ALTER_ON_EVALUATION_CONTEXT

他のユーザーのスキーマにある特定の評価コンテキストを変更する権限。

SYS.DBMS_RULE_ADM.ALTER_ON_RULE

他のユーザーのスキーマにある特定のルールを変更する権限。

SYS.DBMS_RULE_ADM.ALTER_ON_RULE_SET

他のユーザーのスキーマにある特定のルール・セットを変更する権限。

SYS.DBMS_RULE_ADM.EXECUTE_ON_EVALUATION_CONTEXT

他のユーザーのスキーマにある特定の評価コンテキストを実行する権限。

SYS.DBMS_RULE_ADM.EXECUTE_ON_RULE

他のユーザーのスキーマにある特定のルールを実行する権限。

SYS.DBMS_RULE_ADM.EXECUTE_ON_RULE_SET

他のユーザーのスキーマにある特定のルール・セットを実行する権限。

たとえば、strmadminスキーマのhr_dmlという名前のルールを変更する権限をHRユーザーに付与するには、次のように入力します。

BEGIN 
  DBMS_RULE_ADM.GRANT_OBJECT_PRIVILEGE(
    privilege    => SYS.DBMS_RULE_ADM.ALTER_ON_RULE,
    object_name  => 'strmadmin.hr_dml',
    grantee      => 'hr', 
    grant_option => FALSE);
END;
/

141.3.11 GRANT_SYSTEM_PRIVILEGEプロシージャ

このプロシージャは、指定のシステム権限を指定のユーザーまたはロールに付与します。

構文

DBMS_RULE_ADM.GRANT_SYSTEM_PRIVILEGE(
   privilege     IN  BINARY_INTEGER,
   grantee       IN  VARCHAR2,
   grant_option  IN  BOOLEAN   DEFAULT FALSE);

パラメータ

表141-13 GRANT_SYSTEM_PRIVILEGEプロシージャのパラメータ

パラメータ 説明

privilege

権限受領者に付与するシステム権限の名前。

grantee

権限を付与するユーザーまたはロールの名前。

grant_option

TRUEに設定すると、指定ユーザーまたは指定の権限を付与されたユーザーは、システム権限を他のユーザーに付与できます。

FALSEに設定すると、指定ユーザーまたは指定の権限を付与されたユーザーは、システム権限を他のユーザーに付与できません。

使用上の注意

表141-14に、システム権限を示します。

表141-14 評価コンテキスト、ルールおよびルール・セットに関するシステム権限

権限 説明

SYS.DBMS_RULE_ADM.ALTER_ANY_EVALUATION_CONTEXT

任意のユーザーが所有する評価コンテキストを変更する権限。

SYS.DBMS_RULE_ADM.ALTER_ANY_RULE

任意のユーザーが所有するルールを変更する権限。

SYS.DBMS_RULE_ADM.ALTER_ANY_RULE_SET

任意のユーザーが所有するルール・セットを変更する権限。

SYS.DBMS_RULE_ADM.CREATE_ANY_EVALUATION_CONTEXT

新規評価コンテキストを任意のスキーマに作成する権限。

SYS.DBMS_RULE_ADM.CREATE_EVALUATION_CONTEXT_OBJ

新規評価コンテキストを権限受領者のスキーマに作成する権限。

SYS.DBMS_RULE_ADM.CREATE_ANY_RULE

新規ルールを任意のスキーマに作成する権限。

SYS.DBMS_RULE_ADM.CREATE_RULE_OBJ

新規ルールを権限受領者のスキーマに作成する権限。

SYS.DBMS_RULE_ADM.CREATE_ANY_RULE_SET

新規ルール・セットを任意のスキーマに作成する権限。

SYS.DBMS_RULE_ADM.CREATE_RULE_SET_OBJ

新規ルール・セットを権限受領者のスキーマに作成する権限。

SYS.DBMS_RULE_ADM.DROP_ANY_EVALUATION_CONTEXT

任意のスキーマの評価コンテキストを削除する権限。

SYS.DBMS_RULE_ADM.DROP_ANY_RULE

任意のスキーマのルールを削除する権限。

SYS.DBMS_RULE_ADM.DROP_ANY_RULE_SET

任意のスキーマのルール・セットを削除する権限。

SYS.DBMS_RULE_ADM.EXECUTE_ANY_EVALUATION_CONTEXT

任意のユーザーが所有する評価コンテキストを実行する権限。

SYS.DBMS_RULE_ADM.EXECUTE_ANY_RULE

任意のユーザーが所有するルールを実行する権限。

SYS.DBMS_RULE_ADM.EXECUTE_ANY_RULE_SET

任意のユーザーが所有するルール・セットを実行する権限。

たとえば、ルール・セットを任意のスキーマに作成する権限をstrmadminユーザーに付与するには、次のように入力します。

BEGIN 
  DBMS_RULE_ADM.GRANT_SYSTEM_PRIVILEGE(
    privilege    => SYS.DBMS_RULE_ADM.CREATE_ANY_RULE_SET,
    grantee      => 'strmadmin', 
    grant_option => FALSE);
END;
/

注意:

「ANY」オブジェクトに関する権限(ALTER_ANY_RULEなど)を付与する際に、O7_DICTIONARY_ACCESSIBILITY初期化パラメータがFALSEに設定されている場合は、SYSスキーマを除くすべてのスキーマで、該当するタイプのオブジェクトへのアクセス権をユーザーに付与してください。デフォルトでは、初期化パラメータO7_DICTIONARY_ACCESSIBILITYFALSEに設定されます。

SYSスキーマ内のオブジェクトへのアクセス権を付与する場合は、オブジェクトに対するオブジェクト権限を明示的に付与できます。または、O7_DICTIONARY_ACCESSIBILITY初期化パラメータをTRUEに設定することもできます。この設定によって、「ANY」オブジェクトに対して付与した権限で、SYSも含めた任意のスキーマにアクセスできます。

141.3.12 REMOVE_RULEプロシージャ

このプロシージャは、指定のルールを指定のルール・セットから削除します。

構文

DBMS_RULE_ADM.REMOVE_RULE(
   rule_name                IN  VARCHAR2,
   rule_set_name            IN  VARCHAR2,
   evaluation_context       IN  VARCHAR2  DEFAULT NULL,
   all_evaluation_contexts  IN  BOOLEAN   DEFAULT FALSE);

パラメータ

表141-15 REMOVE_RULEプロシージャのパラメータ

パラメータ 説明

rule_name

ルール・セットから削除するルールの名前で、[schema_name.]rule_nameの形式で指定します。たとえばhrスキーマのall_aという名前のルールを削除するには、このパラメータにhr.all_aを入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

rule_set_name

ルールを削除するルール・セットの名前で、[schema_name.]rule_set_nameの形式で指定します。たとえばhrスキーマのapply_rulesという名前のルール・セットからルールを削除するには、このパラメータにhr.apply_rulesを入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

evaluation_context_name

削除するルールに関連する評価コンテキストの名前で、[schema_name.]evaluation_context_nameの形式で指定します。たとえば、hrスキーマのdept_eval_contextという名前の評価コンテキストを指定するには、このパラメータにhr.dept_eval_contextを入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

削除するルールに、ADD_RULEプロシージャを使用してルールをルール・セットに追加するときに指定した評価コンテキストがある場合は、それと同じ評価コンテキストを指定します。異なる評価コンテキストで同じルールを複数回追加した場合は、削除する評価コンテキストでルールを指定します。ルールに関連付けられていない評価コンテキストを指定すると、エラーが発生します。

ルールをルール・セットに追加するときに評価コンテキストを指定しなかった場合は、NULLを指定します。1つ以上の評価コンテキストがルールに関連付けられている場合にNULLに設定すると、エラーが発生します。

all_evaluation_contexts

TRUEに設定すると、ルールおよびそのルールに関連付けられているすべての評価コンテキストがルール・セットから削除されます。

FALSEに設定すると、指定した評価コンテキストを持つルールのみが削除されます。

このパラメータが関連するのは、同じルールを異なる評価コンテキストを持つルール・セットに複数回追加した場合のみです。

使用上の注意

このプロシージャを実行するユーザーは、次の要件を最低1つ満たす必要があります。

  • ルール・セットに対するALTER_ON_RULE_SET権限があること。

  • ALTER_ANY_RULE_SETシステム権限があること。

  • ルール・セットの所有者であること。

    注意:

    これは、データベースからルールを削除するプロシージャではありません。データベースからルールを削除するには、DROP_RULEプロシージャを使用します。

141.3.13 REVOKE_OBJECT_PRIVILEGEプロシージャ

このプロシージャは、指定オブジェクトに関する指定のオブジェクト権限を、指定のユーザーまたはロールから取り消します。

構文

DBMS_RULE_ADM.REVOKE_OBJECT_PRIVILEGE(
   privilege    IN  BINARY_INTEGER,
   object_name  IN  VARCHAR2,
   revokee      IN  VARCHAR2);

パラメータ

表141-16 REVOKE_OBJECT_PRIVILEGEプロシージャのパラメータ

パラメータ 説明

privilege

権限受領者から取り消すオブジェクトに関するオブジェクト権限の名前。オブジェクト権限のリストは、GRANT_OBJECT_PRIVILEGEプロシージャを参照してください。

object_name

権限受領者から権限を取り消すオブジェクトの名前で、[schema_name.]object_nameの形式で指定します。たとえばhrスキーマのapply_rulesという名前のルール・セットに関するオブジェクトの権限を取り消すには、このパラメータにhr.apply_rulesを入力します。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。オブジェクトは、既存のルール、ルール・セットまたは評価コンテキストであることが必要です。

revokee

権限が取り消されるユーザーまたはロールの名前。オブジェクトの所有者を指定することはできません。

141.3.14 REVOKE_SYSTEM_PRIVILEGEプロシージャ

このプロシージャは、指定のシステム権限を指定のユーザーまたはロールから取り消します。

構文

DBMS_RULE_ADM.REVOKE_SYSTEM_PRIVILEGE(
   privilege  IN  BINARY_INTEGER,
   revokee    IN  VARCHAR2);

パラメータ

表141-17 REVOKE_SYSTEM_PRIVILEGEプロシージャのパラメータ

パラメータ 説明

privilege

権限受領者から取り消すシステム権限の名前。システム権限のリストは、GRANT_SYSTEM_PRIVILEGEプロシージャを参照してください。

revokee

権限が取り消されるユーザーまたはロールの名前。