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値ではアクティビティを開始と終了として指定します。また、この関数を「後処理関数」としてコールすると、次の表に示すような結果を返します。