È possibile definire per Publisher le funzioni PL/SQL da eseguire quando una connessione a un'origine dati JDBC viene creata (Funzione di pre-elaborazione) o chiusa (Funzione di post-elaborazione).
La funzione deve restituire un valore booleano. Questa funzione è supportata per i database Oracle.
Questi due campi consentono all'amministratore di impostare gli attributi di contesto di un utente prima che venga stabilita una connessione a un database e quindi di rimuovere gli attributi dopo l'interruzione della connessione da parte del motore di estrazione.
La variabile di sistema :xdo_user_name può essere usata come bind variable per passare il nome utente di login alle chiamate delle funzioni PL/SQL. L'impostazione del contesto utente di login secondo queste modalità consente di rendere sicuri i dati a livello di origine dati anziché a livello di query SQL.
Si supponga, ad esempio, l'esistenza della funzione di esempio seguente:
FUNCTION set_per_process_username (username_in IN VARCHAR2) RETURN BOOLEAN IS BEGIN SETUSERCONTEXT(username_in); return TRUE; END set_per_process_username
Per chiamare questa funzione ogni volta che viene stabilita una connessione al database, immettere quanto segue nel campo Funzione di pre-elaborazione: set_per_process_username(:xdo_user_name)
Un altro uso di esempio potrebbe essere l'inserimento di una riga nella tabella LOGTAB a ogni connessione o disconnessione di un utente:
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;
Nel campo Funzione di pre-elaborazione immettere: BIP_LOG(:xdo_user_name)
Non appena viene stabilita, la nuova connessione al database viene registrata nella tabella LOGTAB. Il valore SMODE specifica l'attività come entrata o come uscita. Il richiamo di questa funzione anche come Funzione di post-elaborazione restituisce risultati simili a quelli indicati nella tabella seguente.