Oracle OLAPでは、次の名前を持つOracle OLAPプログラムが検索され、各プログラムに関する項で説明されているとおりに実行されます。
AUTOGOプログラムは、ユーザーが作成できるプログラムであり、AW ATTACHコマンドの実行時には、Oracle OLAPによってその名前の確認が行われます。
AUTOGOというプログラムを含むアナリティック・ワークスペースをアタッチすると、AW ATTACH文にNOAUTOGO句を指定した場合または別の名前のプログラムを指定するAUTOGO句を記述した場合を除き、Oracle OLAPによってONATTACHプログラムが実行されます。
戻り値
BOOLEAN
Oracle OLAPがアナリティック・ワークスペースを正常に設定してアタッチした場合はTRUE、そうでない場合およびAUTOGOプログラムに例外が発生した場合はFALSEです。
|
注意: 戻り値としてFALSEを発生させるために例外に依存せずに、正常な戻り値を使用することをお薦めします。 |
構文
AUTOGOという名前のプログラムを定義するには、DEFINE PROGRAMに示す構文を使用します。実際のプログラムは、次の引数を持つユーザー定義ファンクションとしてコーディングします。
AUTOGO (password)
ONATTACHプログラムは、ユーザーが作成できるプログラムであり、AW ATTACHコマンドの実行時には、Oracle OLAPによってその名前の確認が行われます。
ONATTACHというプログラムを含むアナリティック・ワークスペースをアタッチすると、AW ATTACH文にNOONATTACH句を指定した場合または別の名前のプログラムを指定するONATTACH句を記述した場合を除き、Oracle OLAPによってONATTACHプログラムが実行されます。
onattachプログラム内の文に応じて、特定のオブジェクトまたはオブジェクト値のセットに対するユーザーのアクセスが許可される場合と拒否される場合とがあります。マルチライタ・モードでのアタッチでは、ACQUIREコマンドを使用して個々のワークスペース・オブジェクトにアクセスできます。読取り専用モードおよび読取り/書込みモードでのアタッチでは、個々のワークスペース・オブジェクトへのアクセスを許可または制限するPERMITコマンドを使用できます。特定のonattachプログラム内で参照されるすべてのオブジェクトは、同じアナリティック・ワークスペース内に存在する必要があります。
戻り値
BOOLEAN
Oracle OLAPがアナリティック・ワークスペースを正常に設定してアタッチした場合はTRUE、そうでない場合およびonattachプログラムに例外が発生した場合はFALSEです。
|
注意: 戻り値としてFALSEを発生させるために例外に依存せずに、正常な戻り値を使用することをお薦めします。 |
構文
ONATTACHという名前のプログラムを定義するには、DEFINE PROGRAMに示す構文を使用します。実際のプログラムは、次の引数を持つユーザー定義ファンクションとしてコーディングします。
ONATTACH ({READ|WRITE|EXCLUSIVE|MULTI} password)
使用上の注意
OLAP APIによって作成されたONATTACHプログラム
アナリティック・ワークスペースがOLAP APIを使用してOLAPキューブとして作成されている場合、OLAP APIによってONATTACHという名前のプログラムが作成されている場合もあります。このように自動的に作成されたONATTACHプログラムは変更できません。また、このONATTACHの実行を無効にすることはお薦めしません。
したがって、アナリティック・ワークスペースにこのタイプのONATTACHプログラムが存在する場合は、別のタイプの起動プログラムを作成して、アナリティック・ワークスペースがアタッチされているときに実行する動作を指定してください。
ONDETACHプログラムは、ユーザーが作成できるプログラムであり、AW DETACHコマンドの実行時には、Oracle OLAPによってその名前の確認が行われます。さらにOracle OLAPでは、プログラムからの戻り値に応じて、アナリティック・ワークスペースがデタッチされた直後にプログラム内のコードが実行されます。
戻り値
BOOLEAN
Oracle OLAPにおいてアナリティック・ワークスペースのデタッチが正常に行われた場合はTRUE、そうでない場合およびdetachプログラムに例外が発生した場合はFALSEです。
|
注意: 戻り値としてFALSEを発生させるために例外に依存せずに、正常な戻り値を使用することをお薦めします。 |
PERMIT_READプログラムは、ユーザーが作成できるプログラムであり、AW ATTACH読取り専用コマンドの実行時には、Oracle OLAPによりその名前の確認が行われます。プログラムからの戻り値に応じて、Oracle OLAPは、アナリティック・ワークスペースのアタッチ後にプログラム内部のコードを実行します。permit_readプログラム内の文に応じて、特定のオブジェクトまたはオブジェクト値のセットに対するユーザーのアクセスが許可される場合と拒否される場合とがあります。permit_readプログラム内では、個々のワークスペース・オブジェクトへのアクセス権を付与または制限するPERMITコマンドを指定できます。特定のpermit_readプログラム内で参照されるすべてのオブジェクトは、同じアナリティック・ワークスペース内に存在する必要があります。
戻り値
BOOLEAN
Oracle OLAPがアナリティック・ワークスペースを正常に設定してアタッチした場合はTRUE、そうでない場合およびpermit_readプログラムに例外が発生した場合はFALSEです。
|
注意: 戻り値としてFALSEを発生させるために例外に依存せずに、正常な戻り値を使用することをお薦めします。 |
構文
PERMIT_READという名前のプログラムを定義するには、DEFINE PROGRAMに示す構文を使用します。実際のプログラムは、次の引数を持つユーザー定義ファンクションとしてコーディングします。
PERMIT_READ (password)
パラメータ
passwordの詳細は、AW ATTACHを参照してください。アナリティック・ワークスペースのアタッチ時にユーザーがパスワードを指定すると、そのパスワードはプログラムへの引数として渡されて処理されます。
PERMIT_WRITEプログラムは、ユーザーが作成できるプログラムであり、AW ATTACH読取り/書込みコマンドの実行時には、Oracle OLAPによりその名前の確認が行われます。プログラムからの戻り値に応じて、Oracle OLAPは、アナリティック・ワークスペースのアタッチ後にプログラム内部のコードを実行します。permit_writeプログラム内の文に応じて、特定のオブジェクトまたはオブジェクト値のセットに対するユーザーのアクセスが許可される場合と拒否される場合とがあります。permit_writeプログラム内では、個々のワークスペース・オブジェクトへのアクセス権を付与または制限するPERMITコマンドを指定できます。特定のpermit_writeプログラム内で参照されるすべてのオブジェクトは、同じアナリティック・ワークスペース内に存在する必要があります。
戻り値
BOOLEAN
Oracle OLAPがアナリティック・ワークスペースを正常に設定してアタッチした場合はTRUE、そうでない場合およびpermit_writeプログラムに例外が発生した場合はFALSEです。
|
注意: 戻り値としてFALSEを発生させるために例外に依存せずに、正常な戻り値を使用することをお薦めします。 |
構文
PERMIT_WRITEという名前のプログラムを定義するには、DEFINE PROGRAMに示す構文を使用します。実際のプログラムは、次の引数を持つユーザー定義ファンクションとしてコーディングします。
PERMIT_WRITE (password)
パラメータ
passwordの詳細は、AW ATTACHを参照してください。アナリティック・ワークスペースのアタッチ時にユーザーがパスワードを指定すると、そのパスワードはプログラムへの引数として渡されて処理されます。
TRIGGER_AFTER_UPDATEプログラムは、ユーザーが作成できるプログラムであり、アナリティック・ワークスペースに対するUPDATEコマンドの実行時には、Oracle OLAPによって名前の確認が行われます。このプログラムは、更新中のアナリティック・ワークスペースと同じワークスペースに存在する場合、UPDATEの実行後に実行されます。
例
例6-1 TRIGGER_AFTER_UPDATEプログラム
アナリティック・ワークスペースで次のようにプログラムを定義したとします。
DEFINE TRIGGER_AFTER_UPDATE PROGRAM
PROGRAM
SHOW JOINCHARS ('calltype = ' CALLTYPE)
SHOW JOINCHARS ('triggering event = ' TRIGGER(EVENT))
SHOW JOINCHARS ('triggering subevent = ' TRIGGER(SUBEVENT))
END
UPDATE文を発行すると、このプログラムが実行され、次の出力が表示されます。
calltype = TRIGGER triggering event = AFTER_UPDATE triggering subevent = AW
TRIGGER_AWプログラムは、アナリティック・ワークスペース内でユーザーが作成できるプログラムです。そのアナリティック・ワークスペースが現行のアナリティック・ワークスペースであり、かつ別のアナリティック・ワークスペースを作成、アタッチ、デタッチまたは削除した場合には、Oracle OLAPによってその名前の確認が行われます。
使用上の注意
TRIGGER_AWプログラムの作成方法
TRIGGER_AWプログラムは、次の手順に従って作成します。
プログラムを定義します(DEFINE PROGRAMを参照)。
プログラムの名前としてTRIGGER_AWを指定します。
プログラムを実際にコーディングします(「プログラム内容の指定」を参照)。
|
注意: 再帰的トリガーはサポートされていません。TRIGGER_AWプログラムの内部でAW文を発行する場合は、その前にUSETRIGGERSオプションをNOに設定しておく必要があります。 |
TRIGGER_BEFORE_UPDATEプログラムは、ユーザーが作成できるプログラムであり、UPDATEコマンドの実行時には、Oracle OLAPによって名前の確認が行われます。このプログラムは、更新中のアナリティック・ワークスペースと同じワークスペースに存在する場合にOracle OLAPによって実行され、プログラムの戻り値(存在する場合)に応じて、ワークスペースが更新される場合とされない場合があります。
戻り値
プログラムは、BOOLEAN値を返すファンクションとして作成できます。この場合には、プログラムからの戻り値がFALSEのとき、TRIGGER_BEFORE_UPDATEプログラムの実行をトリガーしたUPDATE文は実行されず、プログラムからの戻り値がTRUEまたはNAのときは、UPDATE文が実行されます。
例
例6-3 TRIGGER_BEFORE_UPDATEプログラム
myawというアナリティック・ワークスペースに、次の定義を持つTRIGGER_BEFORE_UPDATEプログラムが存在するとします。
DEFINE TRIGGER_BEFORE_UPDATE PROGRAM BOOLEAN
PROGRAM
SHOW JOINCHARS ('calltype = ' CALLTYPE)
SHOW JOINCHARS ('triggering event = ' TRIGGER(EVENT))
SHOW JOINCHARS ('triggering subevent = ' TRIGGER(SUBEVENT))
RETURN TRUE
END
myvarというTEXT変数を定義して、UPDATE文を発行するとします。TRIGGER_BEFORE_UPDSATEプログラムが実行されます。
calltype = TRIGGER triggering event = BEFORE_UPDATE triggering subevent = AW
このプログラムからの戻り値はTRUEであるため、myvarの定義は、ワークスペースをデタッチして再アタッチした後にも存在します。
AW DETACH myaw
AW ATTACH myaw
DESCRIBE
DEFINE TRIGGER_BEFORE_UPDATE PROGRAM BOOLEAN
PROGRAM
SHOW JOINCHARS ('calltype = ' CALLTYPE)
SHOW JOINCHARS ('triggering event = ' TRIGGER(EVENT))
SHOW JOINCHARS ('triggering subevent = ' TRIGGER(SUBEVENT))
RETURN TRUE
END
DEFINE MYVAR VARIABLE TEXT
ただし、プログラムからの戻り値がFALSEになるようにプログラムを変更した場合は、ワークスペースのデタッチと再アタッチを実行すると、myvarの定義がワークスペース内に存在しなくなるだけでなく、TRIGGER_BEFORE_UPDATEプログラムの定義もワークスペース内に存在しなくなります。
TRIGGER_DEFINEプログラムは、ユーザーが作成するプログラムであり、DEFINEコマンドの実行時には、Oracle OLAPによって名前の確認が行われます。このプログラムは、新しいオブジェクトを定義するアナリティック・ワークスペースと同じワークスペースに存在する場合に実行されます。
例
例6-4 TRIGGER_DEFINEプログラム
次のような記述を持つTRIGGER_DEFINEプログラムをアナリティック・ワークスペースに作成したとします。
DEFINE TRIGGER_DEFINE PROGRAM
PROGRAM
SHOW JOINCHARS ('calltype = ' CALLTYPE)
SHOW JOINCHARS ('triggering event = ' TRIGGER(EVENT))
SHOW JOINCHARS ('fully qualified object name ='TRIGGER(NAME))
SHOW JOINCHARS ('type of object = 'OBJ(TYPE TRIGGER(NAME))
DESCRIBE &TRIGGER(NAME)
END
次の文に示すように、DEFINE VARIABLE文を発行して、myvarという変数を定義したとします。この文の後の出力に示すように、Oracle OLAPはこの変数を定義して、TRIGGER_DEFINEプログラムを実行します。
DEFINE myvar VARIABLE TEXT calltype = TRIGGER triggering event = DEFINE fully qualified object name =MYAW!MYVAR type of object = VARIABLE DEFINE MYVAR VARIABLE TEXT