Du kan definiera PL/SQL-funktioner som Publisher ska köra när en anslutning till en JDBC-datakälla skapas (förbearbetningsfunktion) eller stängs (efterbearbetningsfunktion).
Funktionen måste returnera ett booleskt värde. Funktionen stöds bara för Oracle-databaser.
Med de här två fälten kan administratören ställa in en användares kontextattribut innan en anslutning till en databas upprättas och sedan avvisa attributen när anslutningen bryts av extraheringsmotorn.
Systemvariabeln :xdo_user_name kan användas som en bindvariabel för att överföra inloggningsanvändarnamn för PL/SQL-funktionsanropen. Om du anger användarkontexten för inloggning på det här sättet kan du skydda data på datakällsnivå (i stället för på SQL-frågenivå).
Säg att vi har den här exempelfunktionen:
FUNCTION set_per_process_username (username_in IN VARCHAR2) RETURN BOOLEAN IS BEGIN SETUSERCONTEXT(username_in); return TRUE; END set_per_process_username
Om funktionen ska anropas varje gång en anslutning görs till databasen anger du följande i fältet Förbearbetningsfunktion: set_per_process_username(:xdo_user_name)
Ett annat exempel på användning kan vara att infoga en rad i tabellen LOGTAB varje gång en användare ansluter eller kopplar ned:
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;
I fältet Förbearbetningsfunktion anger du: BIP_LOG(:xdo_user_name)
När en ny anslutning görs till databasen loggas det i tabellen LOGTAB. Värdet SMODE anger aktiviteten som en ingång eller en utgång. Om du även anropar funktionen som en Efterbearbetningsfunktion returneras resultat som de som visas i tabellen nedan.