Oracle Streamsでのルールベースの変換は、ポジティブ・ルール・セットのルールがTRUE
に評価される場合に行われるメッセージの変更を意味します。ルールベースの変換には、宣言とカスタムの2つのタイプがあります。
次の項では、ルールベースの変換の管理について説明します。
注意: ルールがポジティブ・ルール・セットに含まれる場合にのみ、ルールに指定した変換が実行されます。ルールが取得プロセス、伝播、適用プロセスまたはメッセージ・クライアントのネガティブ・ルール・セットに含まれる場合、これらのOracle Streamsクライアントではルールベースの変換が無視されます。 |
宣言ルールベースの変換を管理するには、DBMS_STREAMS_ADM
パッケージのADD_COLUMN
、DELETE_COLUMN
、RENAME_COLUMN
、RENAME_SCHEMA
およびRENAME_TABLE
プロシージャを使用します。
この項では、次のタスクの実行手順を説明します。
ここでは、宣言ルールベースの変換をルールに追加する例について説明します。
DBMS_STREAMS_ADM
パッケージのRENAME_TABLE
プロシージャを使用して、行LCR内の表名を変更する宣言ルールベースの変換を追加します。たとえば、次のプロシージャを実行すると、strmadmin
スキーマのjobs12
ルールに宣言ルールベースの変換が追加されます。
BEGIN DBMS_STREAMS_ADM.RENAME_TABLE( rule_name => 'strmadmin.jobs12', from_table_name => 'hr.jobs', to_table_name => 'hr.assignments', step_number => 0, operation => 'ADD'); END; /
このプロシージャによって追加された宣言ルールベースの変換では、ルールjobs12
が行LCRについてTRUE
と評価された場合に、行LCR内の表hr.jobs
の名前がhr.assignments
に変更されます。jobs12
ルールに複数の宣言ルールベースの変換が指定された場合、step_number
パラメータが0
(ゼロ)に設定されているため、この変換はデフォルトの変換順序に従って実行されます。また、operation
パラメータがADD
に設定されており、変換はルールから削除されるのではなく、ルールに追加されることを示しています。
RENAME_TABLE
プロシージャでは、表の他にスキーマ名を変更する変換を追加することもできます。たとえば、前述の例でスキーマ名をoe
に変更するように指定するには、to_table_name
パラメータにoe.assignments
を指定します。
DBMS_STREAMS_ADM
パッケージのADD_COLUMN
プロシージャを使用して、行LCR内の行に列を追加する宣言ルールベースの変換を追加します。たとえば、次のプロシージャを実行すると、strmadmin
スキーマのemployees35
ルールに宣言ルールベースの変換が追加されます。
BEGIN DBMS_STREAMS_ADM.ADD_COLUMN( rule_name => 'employees35', table_name => 'hr.employees', column_name => 'birth_date', column_value => ANYDATA.ConvertDate(NULL), value_type => 'NEW', step_number => 0, operation => 'ADD'); END; /
このプロシージャによって追加された宣言ルールベースの変換では、ルールemployees35
が行LCRについてTRUE
と評価された場合に、行LCR内のhr.employees
表の行に、データ型DATE
のbirth_date
列が追加されます。
ANYDATA.ConvertDate
ファンクションによって列の型および列の値が指定されることに注意してください。この例では、追加された列の値はNULL
です。ただし、有効な日付を指定することもできます。追加する列に適したAnyData
ファンクションを使用します。たとえば、追加する列のデータ型がNUMBER
である場合、ANYDATA.ConvertNumber
ファンクションを使用します。
value_type
パラメータがNEW
に設定されており、これは、行LCR内の新しい値に列が追加されることを示しています。OLD
を指定して、古い値に列を追加することもできます。
employees35
ルールに複数の宣言ルールベースの変換が指定された場合、step_number
パラメータが0
(ゼロ)に設定されているため、この変換はデフォルトの変換順序に従って実行されます。また、operation
パラメータがADD
に設定されており、変換はルールから削除されるのではなく、ルールに追加されることを示しています。
注意: ADD_COLUMN プロシージャはオーバーロードされます。column_function パラメータを指定すると、追加された列の値を現行のシステム日付またはタイムスタンプにすることができます。column_value とcolumn_function パラメータは相互に排他的です。 |
関連項目: AnyData 型ファンクションの詳細は、Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンスを参照 |
宣言ルールベースの変換を追加するプロシージャのoperation
パラメータをADD
に設定すると、次のリストのパラメータが既存の変換パラメータと一致した場合に、既存の宣言ルールベースの変換が上書きされます。
ADD_COLUMN
プロシージャ: rule_name
、table_name
、column_name
およびstep_number
パラメータ
DELETE_COLUMN
プロシージャ: rule_name
、table_name
、column_name
およびstep_number
パラメータ
RENAME_COLUMN
プロシージャ: rule_name
、table_name
、from_column_name
およびstep_number
パラメータ
RENAME_SCHEMA
プロシージャ: rule_name
、from_schema_name
およびstep_number
パラメータ
RENAME_TABLE
プロシージャ: rule_name
、from_table_name
およびstep_number
パラメータ
たとえば、次のプロシージャを実行して、既存の宣言ルールベースの変換を作成したとします。
BEGIN DBMS_STREAMS_ADM.RENAME_COLUMN( rule_name => 'departments33', table_name => 'hr.departments', from_column_name => 'manager_id', to_column_name => 'lead_id', value_type => 'NEW', step_number => 0, operation => 'ADD'); END; /
次のプロシージャを実行すると、この既存の宣言ルールベースの変換は上書きされます。
BEGIN DBMS_STREAMS_ADM.RENAME_COLUMN( rule_name => 'departments33', table_name => 'hr.departments', from_column_name => 'manager_id', to_column_name => 'lead_id', value_type => '*', step_number => 0, operation => 'ADD'); END; /
この場合、宣言ルールベースの変換のvalue_type
パラメータがNEW
から*
に変更されています。つまり、元の変換では新しい値の名前のみが行LCRで変更されますが、新しい変換では古い値と新しい値の両方の名前が行LCRで変更されます。
宣言ルールベースの変換をルールから削除するには、変換を追加するために使用したものと同じプロシージャを使用しますが、operation
パラメータにREMOVE
を指定します。たとえば、「表名を変更する宣言ルールベースの変換の追加」で追加した変換を削除するには、次のプロシージャを実行します。
BEGIN DBMS_STREAMS_ADM.RENAME_TABLE( rule_name => 'strmadmin.jobs12', from_table_name => 'hr.jobs', to_table_name => 'hr.assignments', step_number => 0, operation => 'REMOVE'); END; /
「宣言ルールベースの変換の管理」に示すいずれかの宣言変換プロシージャでoperation
パラメータがREMOVE
に設定されている場合、そのプロシージャのrule_name
パラメータ以外のパラメータはオプションになります。これらのオプションのパラメータがNULL
に設定されている場合、これらはワイルドカードになります。
前述の例のRENAME_TABLE
プロシージャは、1つ以上のオプションのパラメータがNULL
に設定されている場合、次のように動作します。
from_table_nameパラメータ | to_table_nameパラメータ | step_numberパラメータ | 結果 |
---|---|---|---|
NULL |
NULL |
NULL |
指定したルールからすべての表名変更変換が削除されます |
NULL 以外 |
NULL |
NULL |
指定したfrom_table_name を含むすべての表名変更変換が、指定したルールから削除されます |
NULL |
NULL 以外 |
NULL |
指定したto_table_name を含むすべての表名変更変換が、指定したルールから削除されます |
NULL |
NULL |
NULL 以外 |
指定したstep_number を含むすべての表名変更変換が、指定したルールから削除されます |
NULL 以外 |
NULL 以外 |
NULL |
指定したfrom_table_name およびto_table_name を含むすべての表名変更変換が、指定したルールから削除されます |
NULL |
NULL 以外 |
NULL 以外 |
指定したto_table_name およびstep_number を含むすべての表名変更変換が、指定したルールから削除されます |
NULL 以外 |
NULL |
NULL 以外 |
指定したfrom_table_name およびstep_number を含むすべての表名変更変換が、指定したルールから削除されます |
オプションのパラメータをNULL
に設定してoperationパラメータをREMOVE
に設定した場合、他の宣言変換プロシージャも同様に動作します。
ルールのカスタム・ルールベースの変換を設定または設定解除するには、DBMS_STREAMS_ADM
パッケージのSET_RULE_TRANSFORM_FUNCTION
プロシージャを使用します。このプロシージャは、ルールのアクション・コンテキストを変更して、カスタム・ルールベースの変換を指定します。
この項では、次のタスクの実行手順を説明します。
注意: LCRのLONG 、LONG RAW またはLOB列のデータは、カスタム・ルールベースの変換で変更しないでください。 |
注意:
|
カスタム・ルールベースの変換ファンクションは、常に1つのメッセージに対して動作しますが、1つまたは多数のメッセージを戻すことができます。1つのメッセージを戻すカスタム・ルールベースの変換ファンクションは、1対1の変換ファンクションです。1対1の変換ファンクションには、次のシグネチャが必要です。
FUNCTION user_function ( parameter_name IN ANYDATA) RETURN ANYDATA;
user_function
はファンクション名で、parameter_name
はファンクションに渡されるパラメータの名前です。ファンクションに渡されるパラメータはメッセージをANYDATA
にカプセル化したもので、ファンクションではANYDATA
にカプセル化したメッセージを戻す必要があります。
2つ以上のメッセージを戻すことができるカスタム・ルールベースの変換ファンクションは、1対多の変換ファンクションです。1対多の変換ファンクションには、次のシグネチャが必要です。
FUNCTION user_function ( parameter_name IN ANYDATA) RETURN STREAMS$_ANYDATA_ARRAY;
user_function
はファンクション名で、parameter_name
はファンクションに渡されるパラメータの名前です。ファンクションに渡されるパラメータはメッセージをANYDATA
にカプセル化したもので、ファンクションはカプセル化したANYDATA
メッセージを0個以上含む配列を戻す必要があります。配列に含まれるカプセル化したANYDATA
メッセージが0個の場合、元のメッセージは廃棄されます。1対多の変換ファンクションは、Oracle Streamsの取得プロセスおよび同期取得に対してのみサポートされます。
STREAMS$_ANYDATA_ARRAY
型はOracleが提供する型で、次の定義を持ちます。
CREATE OR REPLACE TYPE SYS.STREAMS$_ANYDATA_ARRAY AS VARRAY(2147483647) of SYS.ANYDATA /
次の手順では、1対1のファンクションを使用するカスタム・ルールベースの変換を作成する一般的な手順について説明します。
SQL*Plusで、管理ユーザーまたはPL/SQLファンクションを所有するユーザーとしてデータベースに接続します。
SQL*Plusでデータベースに接続する方法については、Oracle Database管理者ガイドを参照してください。
変換を実行するPL/SQLファンクションを作成します。
注意: 変換ファンクションが決定的であるようにしてください。決定的なファンクションでは、入力された引数の値がどのような組合せであっても、常に同じ値が戻されます。また、変換ファンクションで例外が発生しないようにしてください。例外により、取得プロセス、伝播または適用プロセスが無効化される場合があり、これらの処理を続行するために変換ファンクションの修正が必要になります。同期取得のカスタム・ルールベースの変換で例外が発生すると、その例外を発生させたDML文が強制終了されます。メッセージ・クライアントのカスタム・ルールベースの変換で例外が発生すると、メッセージ・クライアントでメッセージをデキューできなくなる場合があります。 |
次の例では、departments
表のdepartment_name
列の値をExecutive
からManagement
に変更するファンクションexecutive_to_management
がhr
スキーマ内に作成されます。会社の事業所の1つがこの部門に異なる名称を使用している場合に、このような変換が必要になることがあります。
CREATE OR REPLACE FUNCTION hr.executive_to_management(in_any IN ANYDATA) RETURN ANYDATA IS lcr SYS.LCR$_ROW_RECORD; rc NUMBER; ob_owner VARCHAR2(30); ob_name VARCHAR2(30); dep_value_anydata ANYDATA; dep_value_varchar2 VARCHAR2(30); BEGIN -- Get the type of object -- Check if the object type is SYS.LCR$_ROW_RECORD IF in_any.GETTYPENAME='SYS.LCR$_ROW_RECORD' THEN -- Put the row LCR into lcr rc := in_any.GETOBJECT(lcr); -- Get the object owner and name ob_owner := lcr.GET_OBJECT_OWNER(); ob_name := lcr.GET_OBJECT_NAME(); -- Check for the hr.departments table IF ob_owner = 'HR' AND ob_name = 'DEPARTMENTS' THEN -- Get the old value of the department_name column in the LCR dep_value_anydata := lcr.GET_VALUE('old','DEPARTMENT_NAME'); IF dep_value_anydata IS NOT NULL THEN -- Put the column value into dep_value_varchar2 rc := dep_value_anydata.GETVARCHAR2(dep_value_varchar2); -- Change a value of Executive in the column to Management IF (dep_value_varchar2 = 'Executive') THEN lcr.SET_VALUE('OLD','DEPARTMENT_NAME', ANYDATA.CONVERTVARCHAR2('Management')); END IF; END IF; -- Get the new value of the department_name column in the LCR dep_value_anydata := lcr.GET_VALUE('new', 'DEPARTMENT_NAME', 'n'); IF dep_value_anydata IS NOT NULL THEN -- Put the column value into dep_value_varchar2 rc := dep_value_anydata.GETVARCHAR2(dep_value_varchar2); -- Change a value of Executive in the column to Management IF (dep_value_varchar2 = 'Executive') THEN lcr.SET_VALUE('new','DEPARTMENT_NAME', ANYDATA.CONVERTVARCHAR2('Management')); END IF; END IF; END IF; RETURN ANYDATA.CONVERTOBJECT(lcr); END IF; RETURN in_any; END; /
Oracle Streams管理者にhr.executive_to_management
ファンクションのEXECUTE
権限を付与します。
GRANT EXECUTE ON hr.executive_to_management TO strmadmin;
データベースにOracle Streams管理者として接続します。
hr.departments
表のDML操作についてサブセット・ルールを作成します。このサブセット・ルールでは、手順2で作成した変換を使用します。
カスタム・ルールベースの変換を使用する場合、サブセット・ルールは不要です。この例では、複数の名前/値ペアを持つアクション・コンテキストの具体例を示すために、サブセット・ルールを使用しています。この例では、データベースdbs1.example.com
の適用プロセスにサブセット・ルールを作成します。これらのルールがTRUE
と評価されるのは、hr.departments
表内のlocation_id
が1700
の1行に対するDML変更がLCRに含まれる場合です。この例では、streams_queue
というANYDATA
キューがデータベースに存在することを想定しています。
これらのルールを作成するには、次のADD_SUBSET_RULES
プロシージャを実行します。
BEGIN DBMS_STREAMS_ADM.ADD_SUBSET_RULES( table_name => 'hr.departments', dml_condition => 'location_id=1700', streams_type => 'apply', streams_name => 'strm01_apply', queue_name => 'streams_queue', include_tagged_lcr => FALSE, source_database => 'dbs1.example.com'); END; /
注意:
|
次の問合せを実行して、システムで作成されたルールの名前を特定します。
SELECT RULE_NAME, SUBSETTING_OPERATION FROM DBA_STREAMS_RULES WHERE OBJECT_NAME='DEPARTMENTS' AND DML_CONDITION='location_id=1700';
この問合せでは、次のような出力が表示されます。
RULE_NAME SUBSET ------------------------------ ------ DEPARTMENTS5 INSERT DEPARTMENTS6 UPDATE DEPARTMENTS7 DELETE
注意: この情報を取得するには、ADD_SUBSET_RULES を実行するときにOUT パラメータを使用する方法もあります。 |
これらはサブセット・ルールであるため、そのうちの2つには内部変換を実行するNULL
以外のアクション・コンテキストが含まれています。
サブセット化条件INSERT
を持つルールには、更新によってlocation_id
列の値が他の値から1700
に変更される場合に、更新を挿入に変換する内部変換が含まれています。内部変換は、挿入には影響しません。
サブセット化条件DELETE
を持つルールには、更新によってlocation_id
列の値が1700
から他の値に変更される場合に、更新を削除に変換する内部変換が含まれています。内部変換は、削除には影響しません。
この例では、次の問合せを実行すると、ルールDEPARTMENTS5
およびDEPARTMENTS7
がNULL
以外のアクション・コンテキストを持ち、ルールDEPARTMENTS6
がNULL
のアクション・コンテキストを持つことを確認できます。
COLUMN RULE_NAME HEADING 'Rule Name' FORMAT A13 COLUMN ACTION_CONTEXT_NAME HEADING 'Action Context Name' FORMAT A27 COLUMN ACTION_CONTEXT_VALUE HEADING 'Action Context Value' FORMAT A30 SELECT RULE_NAME, AC.NVN_NAME ACTION_CONTEXT_NAME, AC.NVN_VALUE.ACCESSVARCHAR2() ACTION_CONTEXT_VALUE FROM DBA_RULES R, TABLE(R.RULE_ACTION_CONTEXT.ACTX_LIST) AC WHERE RULE_NAME IN ('DEPARTMENTS5','DEPARTMENTS6','DEPARTMENTS7');
この問合せでは、次のような出力が表示されます。
Rule Name Action Context Name Action Context Value ------------- --------------------------- ------------------------------ DEPARTMENTS5 STREAMS$_ROW_SUBSET INSERT DEPARTMENTS7 STREAMS$_ROW_SUBSET DELETE
DEPARTMENTS6
ルールは、アクション・コンテキストがNULL
であるため出力には表示されません。
SET_RULE_TRANSFORM_FUNCTION
プロシージャを実行して、カスタム・ルールベースの変換をサブセット・ルールごとに設定します。この手順では、このプロシージャをルールごとに実行し、hr.executive_to_management
を変換ファンクションとして指定します。他のユーザーがアクション・コンテキストを同時に変更していないことを確認してください。
BEGIN DBMS_STREAMS_ADM.SET_RULE_TRANSFORM_FUNCTION( rule_name => 'departments5', transform_function => 'hr.executive_to_management'); DBMS_STREAMS_ADM.SET_RULE_TRANSFORM_FUNCTION( rule_name => 'departments6', transform_function => 'hr.executive_to_management'); DBMS_STREAMS_ADM.SET_RULE_TRANSFORM_FUNCTION( rule_name => 'departments7', transform_function => 'hr.executive_to_management'); END; /
具体的には、このプロシージャでは、STREAMS$_TRANSFORM_FUNCTION
を名前として指定し、変換を実行するPL/SQLファンクションの名前を含むANYDATA
インスタンスを値として指定する各ルールのアクション・コンテキストに、名前/値ペアが追加されます。この場合、変換ファンクションはhr.executive_to_management
です。
注意: SET_RULE_TRANSFORM_FUNCTION では、指定した変換ファンクションが存在するかどうかは検証されません。そのファンクションが存在しない場合、Oracle Streamsのプロセスまたはジョブで変換ファンクションの起動が試行されたときにエラーが発生します。 |
これらのルールのアクション・コンテキスト内の名前/値ペアを表示する問合せを実行すると、DEPARTMENTS6
ルールを含め、ルールごとにカスタム・ルールベースの変換用の名前/値ペアが表示されます。
SELECT RULE_NAME, AC.NVN_NAME ACTION_CONTEXT_NAME, AC.NVN_VALUE.ACCESSVARCHAR2() ACTION_CONTEXT_VALUE FROM DBA_RULES R, TABLE(R.RULE_ACTION_CONTEXT.ACTX_LIST) AC WHERE RULE_NAME IN ('DEPARTMENTS5','DEPARTMENTS6','DEPARTMENTS7');
この問合せでは、次のような出力が表示されます。
Rule Name Action Context Name Action Context Value ------------- --------------------------- ------------------------------ DEPARTMENTS51 STREAMS$_ROW_SUBSET INSERT DEPARTMENTS51 STREAMS$_TRANSFORM_FUNCTION "HR"."EXECUTIVE_TO_MANAGEMENT" DEPARTMENTS52 STREAMS$_TRANSFORM_FUNCTION "HR"."EXECUTIVE_TO_MANAGEMENT" DEPARTMENTS53 STREAMS$_ROW_SUBSET DELETE DEPARTMENTS53 STREAMS$_TRANSFORM_FUNCTION "HR"."EXECUTIVE_TO_MANAGEMENT"
また、DBA_STREAMS_TRANSFORM_FUNCTION
データ・ディクショナリ・ビューを使用して、変換ファンクションを表示することもできます。
関連項目: この例で使用したSET_RULE_TRANSFORM_FUNCTION およびルールのタイプの詳細は、Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンスを参照 |
カスタム・ルールベースの変換を変更するには、変換ファンクションを編集するか、またはSET_RULE_TRANSFORM_FUNCTION
プロシージャを実行して異なる変換ファンクションを指定します。この例では、SET_RULE_TRANSFORM_FUNCTION
プロシージャを実行して異なる変換ファンクションを指定します。SET_RULE_TRANSFORM_FUNCTION
プロシージャでは、指定したルールのアクション・コンテキストが変更され、異なる変換ファンクションが実行されるようになります。変換ファンクション自体を編集する場合は、このプロシージャを実行する必要はありません。
この例では、変換ファンクションをhr.execute_to_management
からhr.executive_to_lead
に変更して、ルールDEPARTMENTS5
のカスタム・ルールベースの変換を変更します。hr.execute_to_management
ルールベースの変換は、「カスタム・ルールベースの変換の作成」の例のDEPARTMENTS5
ルールに追加したものです。
Oracle Streamsでは、場合によっては、UPDATE
操作をINSERT
およびDELETE
操作に変換する内部変換が、アクション・コンテキスト内の名前/値ペアを使用してサブセット・ルールによって実行されます。このような変換は、行の移行と呼ばれます。SET_RULE_TRANSFORM_FUNCTION
プロシージャでは、行の移行を実行する名前/値ペアが保持されます。
カスタム・ルールベースの変換を変更するには、次の手順を実行します。
次の問合せを実行すると、ルールのアクション・コンテキスト内のすべての名前/値ペアを表示できます。
COLUMN ACTION_CONTEXT_NAME HEADING 'Action Context Name' FORMAT A30 COLUMN ACTION_CONTEXT_VALUE HEADING 'Action Context Value' FORMAT A30 SELECT AC.NVN_NAME ACTION_CONTEXT_NAME, AC.NVN_VALUE.ACCESSVARCHAR2() ACTION_CONTEXT_VALUE FROM DBA_RULES R, TABLE(R.RULE_ACTION_CONTEXT.ACTX_LIST) AC WHERE RULE_NAME = 'DEPARTMENTS5';
この問合せでは、次のような出力が表示されます。
Action Context Name Action Context Value ------------------------------ ------------------------------ STREAMS$_ROW_SUBSET INSERT STREAMS$_TRANSFORM_FUNCTION "HR"."EXECUTIVE_TO_MANAGEMENT"
SET_RULE_TRANSFORM_FUNCTION
プロシージャを実行して、DEPARTMENTS5
ルールの変換ファンクションをexecutive_to_lead
に設定します。この例では、新しい変換ファンクションがhr.executive_to_lead
で、strmadmin
ユーザーにはそのEXECUTE
権限が付与されていると想定しています。
BEGIN DBMS_STREAMS_ADM.SET_RULE_TRANSFORM_FUNCTION( rule_name => 'departments5', transform_function => 'hr.executive_to_lead'); END; /
変換ファンクションが正しく変更されたかどうかを確認するには、手順1の問合せを再実行します。3つのサブセット・ルールの一貫性を保つために、DEPARTMENTS6
およびDEPARTMENTS7
ルールのアクション・コンテキストも同様に変更する必要があります。
注意:
|
カスタム・ルールベースの変換をルールから設定解除するには、SET_RULE_TRANSFORM_FUNCTION
を実行し、変換ファンクションにNULL
を指定します。NULL
を指定すると、ルールのアクション・コンテキストでカスタム・ルールベースの変換を指定する名前/値ペアが設定解除されます。この例では、ルールDEPARTMENTS5
からカスタム・ルールベースの変換を設定解除します。この変換は、「カスタム・ルールベースの変換の作成」の例のDEPARTMENTS5
ルールに追加したものです。
Oracle Streamsでは、場合によっては、UPDATE
操作をINSERT
およびDELETE
操作に変換する内部変換が、アクション・コンテキスト内の名前/値ペアを使用してサブセット・ルールによって実行されます。このような変換は、行の移行と呼ばれます。SET_RULE_TRANSFORM_FUNCTION
プロシージャでは、行の移行を実行する名前/値ペアが保持されます。
次のプロシージャを実行して、ルールDEPARTMENTS5
のカスタム・ルールベースの変換を設定解除します。
BEGIN DBMS_STREAMS_ADM.SET_RULE_TRANSFORM_FUNCTION( rule_name => 'departments5', transform_function => NULL); END; /
変換ファンクションが設定解除されたかどうかを確認するには、手順1の問合せを実行します。3つのサブセット・ルールの一貫性を保つために、DEPARTMENTS6
およびDEPARTMENTS7
ルールのアクション・コンテキストも同様に変更する必要があります。