Despre funcţia pentru crearea conexiunii şi cea pentru închiderea conexiunii

Puteţi defini funcţii PL/SQL pentru ca Publisher să ruleze la crearea unei conexiuni la o sursă de date JDBC (funcţie de pre-procesare) sau la închiderea acesteia (funcţie de post-procesare).

Funcţia trebuie să returneze o valoare booleană. Această caracteristică este acceptată doar pt. bazele de date Oracle.

Aceste două câmpuri permit administratorului să seteze atributele de context ale unui utilizator înainte de stabilirea unei conexiuni la o bază de date, apoi să abandoneze atributele după întreruperea conexiunii, prin intermediul motorului de extragere.

Variabila de sistem :xdo_user_name poate fi utilizată ca variabilă de legătură pt. transmiterea numelui de utilizator de conectare pt. apelările funcţiilor PL/SQL. Setarea contextului utilizatorului de conectare în acest mod vă permite să securizaţi datele la nivelul sursei de date (nu la nivelul interogării SQL).

Să luăm drept exemplu următoarea funcţie generică:

FUNCTION set_per_process_username (username_in IN VARCHAR2)
   RETURN BOOLEAN IS
     BEGIN
     SETUSERCONTEXT(username_in);
     return TRUE;
   END set_per_process_username

Pentru a apela această funcţie la fiecare stabilire a unei conexiuni la baza de date, introduceţi următoarele în câmpul Funcţie de pre-procesare: set_per_process_username(:xdo_user_name)

Altă utilizare eşantion poate fi inserarea unui rând în tabelul LOGTAB la fiecare conectare sau deconectare a unui utilizator:

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;

În câmpul Funcţie de pre-procesare, introduceţi: BIP_LOG(:xdo_user_name)

Pe măsură ce este stabilită o conexiune nouă la baza de date, aceasta este jurnalizată în tabelul LOGTAB. Valoarea SMODE specifică activitatea ca o intrare sau ca o ieşire. Apelarea acestei funcţii ca pe o Funcţie de post-procesare, precum returnarea rezultatelor precum cele afişate în tabelul de mai jos.