Du kan definere PL-/SQL-funksjoner for Publisher som skal kjøres når en tilkobling til en JDBC-datakilde opprettes (forbehandlingsfunksjon) eller lukkes (etterbehandlingsfunksjon).
Funksjonen må returnere en boolsk verdi. Denne funksjonen støttes bare for Oracle-databaser.
Disse to feltene gjør at administratoren kan angi kontekstattributtene for en bruker før en tilkobling til en database opprettes, og deretter forkaste attributtene når tilkoblingen blir brutt av uttrekkingsmotoren.
Systemvariabelen :xdo_user_name kan brukes som en bindingsvariabel for sending av brukernavnet for pålogging til PL-/SQL-funksjonskall. Når brukerkonteksten for pålogging angis på denne måten, kan du sikre data på datakildenivå (i stedet for på SQL-spørringsnivå).
Anta for eksempel at du har definert følgende eksempelfunksjon:
FUNCTION set_per_process_username (username_in IN VARCHAR2) RETURN BOOLEAN IS BEGIN SETUSERCONTEXT(username_in); return TRUE; END set_per_process_username
Hvis du vil kalle denne funksjonen hver gang en tilkobling til databasen opprettes, angir du følgende i feltet Forbehandlingsfunksjon: set_per_process_username(:xdo_user_name)
Et annet eksempel på bruk kan være å sette inn en rad i tabellen LOGTAB hver gang en bruker kobler til eller fra:
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;
Angi følgende i feltet Forbehandlingsfunksjon: BIP_LOG(:xdo_user_name)
Det opprettes en ny tilkobling til databasen, som logges i tabellen LOGTAB. Verdien for SMODE angir aktiviteten som en inngang eller utgang. Når du kaller denne funksjonen som en etterbehandlingsfunksjon, returneres også resultater som vist i tabellen nedenfor.