A propos des fonctions de création et de fermeture d'une connexion

Vous pouvez définir pour Publisher des fonctions PL/SQL à exécuter lors de la création (fonction à effectuer avant le traitement) ou de la fermeture (fonction à effectuer après le traitement) d'une connexion à une source de données JDBC.

La fonction doit renvoyer une valeur booléenne. Cette fonctionnalité 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 qu'une connexion à une base de données soit établie, puis de rejeter les attributs une fois la connexion interrompue par le moteur d'extraction.

La variable système :xdo_user_name peut être utilisée en tant que variable attachée pour transmettre le nom utilisateur de connexion aux appels de fonction PL/SQL. Définir le contexte utilisateur de connexion de cette manière vous permet de sécuriser les données au niveau de la source de données (plutôt qu'au niveau de la requête SQL).

Prenons par exemple la fonction 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 fois qu'une connexion à la base de données est établie, saisissez les éléments suivants dans le champ Fonction à effectuer avant le traitement : set_per_process_username(:xdo_user_name)

Un autre exemple de syntaxe peut consister en l'insertion d'une ligne dans la table LOGTAB chaque fois qu'un utilisateur se connecte ou se déconnecte :

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, saisissez : BIP_LOG(:xdo_user_name)

Lorsqu'une nouvelle connexion à la base de données est établie, elle est consignée dans la table LOGTAB. La valeur SMODE identifie l'activité en tant qu'entrée ou sortie. L'appel de cette fonction en tant que fonction à effectuer après le traitement renvoie également des résultats tels que ceux affichés dans la table ci-après.