關於前置處理函數和後續處理函數

您可以定義 Oracle BI Publisher 的 PL/SQL 函數,在 JDBC 資料來源連線建立 (前置處理函數) 或關閉 (後續處理函數) 時執行這些函數。

函數必須傳回布林值。只有 Oracle Database 支援此功能。

這兩個欄位可以讓管理員在建立資料庫連線之前,先設定使用者的相關資訊環境屬性,然後在擷取引擎中斷連線之後解除這些屬性。

可以使用系統變數 :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 值指定進入或離開時的活動。以後續處理函數方式呼叫此函數時,還會傳回像是下方表格顯示的結果。