Du kan definere PL/SQL-funktioner, som Publisher skal køre, når en forbindelse til en JDBC-datakilde oprettes (funktion til forudbehandling) eller lukkes (funktion til efterbehandling).
Funktionen skal returnere en boolesk værdi. Denne funktion understøttes kun for Oracle-databaser.
Med disse to felter kan administratoren angive en brugers kontekstattributter, før der oprettes forbindelse til en database, og derefter afslå attributterne, når forbindelsen afbrydes af udtræksprogrammet.
Systemvariablen :xdo_user_name kan bruges som tilknytningsvariabel, der videregiver logon-brugernavnet til PL/SQL-funktionsopkald. Hvis du angiver logon-brugerkonteksten på denne måde, kan du sikre data på datakildeniveau (i stedet for på SQL-forespørgselsniveau).
Lad os for eksempel antage, at du vil bruge følgende eksempelfunktion:
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 kalde denne funktion, hver gang der oprettes forbindelse til databasen, skal du indtaste følgende i feltet Funktion til forudbehandling: set_per_process_username(:xdo_user_name)
I et andet brugseksempel kan du indsætte en række i tabellen LOGTAB, hver gang en bruger opretter eller afbryder en forbindelse:
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 feltet Funktion til forudbehandling skal du indtaste: BIP_LOG(:xdo_user_name)
Når der oprettes en ny forbindelse til databasen, logges den i tabellen LOGTAB. Værdien SMODE angiver aktiviteten som en indgang eller udgang. Kald af denne funktion som en Funktion til efterbehandling returnerer også resultater som dem, der er vist i nedenstående tabel.