前処理関数と後処理関数について
JDBCデータ・ソースへの接続を作成するとき(前処理関数)または閉じるとき(後処理関数)に実行するPublisherのPL/SQL関数を定義できます。
関数はブール値を返す必要があります。この機能は、Oracleデータベースのみでサポートされています。
これらの2つのフィールドを使用して、管理者は、データベースへの接続を確立する前にユーザーのコンテキスト属性を設定し、その後、抽出エンジンが接続を切断した後に属性を取り消すことができます。
システム変数:xdo_user_nameをバインド変数として使用し、ログイン・ユーザー名をPL/SQL関数呼出しに渡すことができます。この方法でログイン・ユーザー・コンテキストを設定すると、(SQL問合せレベルではなく)データソース・レベルでデータを保護できます。
たとえば、次のサンプル関数を想定しています。
FUNCTION set_per_process_username (username_in IN VARCHAR2)
RETURN BOOLEAN IS
BEGIN
SETUSERCONTEXT(username_in);
return TRUE;
END set_per_process_username
データベースへの接続が確立されるたびにこの関数を呼び出すには、「前処理関数」フィールドにset_per_process_username(:xdo_user_name)と入力します。
次の別の使用例では、ユーザーが接続または切断するたびにLOGTAB表に行を挿入しています。
CREATE OR REPLACE FUNCTION BIP_LOG (user_name_in IN VARCHAR2, smode IN VARCHAR2)
RETURN BOOLEAN AS
BEGIN
INSERT INTO LOGTAB VALUES(user_name_in, sysdate,smode);
RETURN true;
END BIP_LOG;
「前処理関数」フィールドに、BIP_LOG(:xdo_user_name)と入力します。
データベースへの新しい接続が確立されると、それがLOGTAB表に記録されます。SMODE値は、アクティビティをエントリ(entry)または終了(exit)として示します。この関数を「後処理関数」として呼び出した場合も、次の表に示すような結果が返されます。