Vous pouvez définir des fonctions PL/SQL à exécuter par Publisher lorsqu'une connexion à une source de données JDBC est créée (fonction avant traitement) ou fermée (fonction après traitement).
La fonction doit retourner une valeur booléenne. Cette fonction n'est prise en charge que pour les bases de données Oracle.
Ces deux champs permettent à l'administrateur de définir les attributs de contexte d'un utilisateur avant la connexion à une base de données, puis d'ignorer les attributs après la rupture de la connexion par le moteur d'extraction.
La variable de système xdo_user_name peut être utilisée en tant que variable de liaison pour transmettre le nom d'utilisateur de connexion aux appels de la fonction PL/SQL. Cette définition du contexte de l'utilisateur de connexion vous permet de sécuriser les données au niveau de la source (plutôt qu'au niveau de l'interrogation SQL).
Par exemple, supposons que vous ayez défini la fonction exemple suivante :
FUNCTION set_per_process_username (username_in IN VARCHAR2) RETURN BOOLEAN IS BEGIN SETUSERCONTEXT(username_in); return TRUE; END set_per_process_username
Pour appeler cette fonction à chaque connexion à la base de données, entrez la valeur suivante dans le champ Fonction à effectuer avant le traitement : set_per_process_username(:xdo_user_name)
Un autre exemple consiste à insérer une rangée à la table LOGTAB à chaque connexion ou déconnexion d'un utilisateur :
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;
Dans le champ Fonction à effectuer avant le traitement, entrez : BIP_LOG(:xdo_user_name)
Lorsqu'une nouvelle connexion à la base de données est établie, elle est enregistrée dans la table LOGTAB. La valeur SMODE indique si l'activité est une entrée ou une sortie. L'appel de cette fonction comme Fonction à effectuer après le traitement retourne également des résultats tels que ceux affichés dans le tableau ci-dessous.