接続を作成する関数と閉じる関数について

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