Μπορείτε να ορίσετε συναρτήσεις PL/SQL για να εκτελούνται από το Publisher όταν δημιουργείται μια σύνδεση με μια προέλευση δεδομένων JDBC (συνάρτηση προεπεξεργασίας) ή όταν αυτή κλείνει (συνάρτηση μετεπεξεργασίας).
Η συνάρτηση πρέπει να επιστρέφει μια τιμή Boolean. Αυτή η δυνατότητα υποστηρίζεται μόνο για βάσεις δεδομένων Oracle.
Αυτά τα δύο πεδία επιτρέπουν στο διαχειριστή να ρυθμίσει τα χαρακτηριστικά περιβάλλοντος ενός χρήστη προτού πραγματοποιηθεί μια σύνδεση με μια βάση δεδομένων και, στη συνέχεια, να απορριφθούν τα χαρακτηριστικά αφού η σύνδεση διακοπεί από το μηχανισμό εξαγωγής.
Η μεταβλητή συστήματος :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 καθορίζει τη δραστηριότητα ως εισαγωγή ή έξοδο. Η κλήση αυτής της συνάρτησης ως Συνάρτηση μετεπεξεργασίας επίσης, επιστρέφει αποτελέσματα όπως αυτά που εμφανίζονται στον παρακάτω πίνακα.