Le guide Oracle Forms 9i/10g
Date de publication : Juin 2005
Les bibliothèques PL/SQL (.PLL)
Définition
Concept
Mise en oeuvre
Les bibliothèques PL/SQL (.PLL)
Définition
Une librairie PL/SQL est un module indépendant regroupant des fonctions, procédures et packages PL/SQL.
Il s'agit donc de code et uniquement de code.
Une librairie PL/SQL ne contient aucun objet Forms.
Ces fonctions peuvent être appelées depuis un module Forms, un menu ou un état.
Une librairie n'est chargée qu'une fois en mémoire.
Concept
Une librairie PL/SQL regroupe les fonctions communes à plusieurs modules.
Ces fonctions sont stockées dans un module indépendant.
Le fichier source éditable (et portable) reçoit l'extension .PLL
Le fichier exécutable (non portable) reçoit l'extension .PLX
Une librairie PL/SQL doit être attachée à la forme, au menu ou à l'état.
Elle peut elle-même être attachée à une autre librairie PL/SQL
Mise en oeuvre
Editer une librairie
Pour modifier le contenu d'une librairie PL/SQL, ouvrez-la dans Forms Builder
Fichier -> Ouvrir (type : Bibliothèques PL/SQL (*.pll))
le nud Unités de programmes contient les fonctions, procédures et package stockées dans la librairie
Sous chaque fonction (pour simplifier, fonctions, procédures et packages seront appelées "fonctions" dans la suite du texte) sont représentées 3 sections
- Spécification affiche la déclaration de la fonction avec les noms et types des paramètres
- Références affiche la liste des objets utilisés par la fonction
- Référencée par affiche la liste des objets qui utilisent cette fonction
Rappel:
A l'intérieur d'un package, une fonction ou procédure peut être surchargée. Dans ce cas, la section Spécification affiche toutes les syntaxes de la fonction.
le nud Bibliothèques attachées contient les éventuelles autres librairies attachées
Créer une librairie
Pour créer un nouveau module librairie PL/SQL cliquer le nud Bibliothèques PL/SQL puis 
ou via le menu Fichier -> Nouveau -> Bibliothèque PL/SQL
Editer une fonction
Pour charger le code d'une fonction dans l'éditeur PL/SQL, faire un double-clic sur l'icône en regard du nom de la fonction ou clic droit et Editeur PL/SQL
Ajouter une fonction
Cliquez le nud Unités de programme puis
Supprimer une fonction
Sélectionnez la fonction puis
Attacher la librairie à une forme, un menu ou un état
Ouvrez le module correspondant
Cliquez le nud Bibliothèques attachées puis

Cliquer le bouton Parcourir
afin d'afficher la boite de sélection des fichiers
Sélectionner une librairie
Cliquer le bouton Attacher
A la question : "la bibliothèque contient une information de répertoire non portable : supprimer le chemin ?" répondez toujours Oui
Lors de la livraison de vos modules exécutables (*.fmx, *.mmx, *.plx) sur l'environnement d'exécution, il y a peu de chance que l'arborescence cible contienne exactement les mêmes répertoires et Forms Runtime risque de ne pas trouver le fichier de la librairie. Si vous retirez la notion de chemin physique, alors Forms Runtime recherchera la librairie dans les répertoires indiqués dans la variable d'environnement FORMS90_PATH.
Générer un fichier exécutable
Pour compiler la librairie et générer le fichier exécutable (.PLX) utilisez l'option de menu Programme -> Compiler module ou le raccourcis clavier Ctrl+T
Cas des fonctions dupliquées
Il est possible de donner un nom à une fonction stockée en librairie qui porte le même nom qu'une fonction stockée dans une unité de programme d'un module.
Dans ce cas, Forms exécutera la fonction de l'unité de programme.
Si vous gérez seul votre application, ce cas de figure a peu de chance d'être rencontré.
Si, par contre, vous intervenez sur un grand projet au sein d'une équipe de développeurs il est préférable de préfixer le nom des fonctions stockées en librairie.
Par exemple si votre librairie gère un système de messagerie et porte le nom : MSG.PLL, préfixez le nom de vos procédures avec MSG_
La procédure Get_Message sera donc nommée : MSG_Get_Message
Référence à un objet contenu dans la forme, le menu ou l'état
Dans une fonction stockée en librairie, il n'est pas possible de référencer directement un objet contenu dans une forme, un menu ou un état.
Pour lire la valeur d'un objet vous devez utiliser la procédure Name_In()
Pour écrire la valeur d'un objet vous devez utiliser la procédure Copy()
Exemples:
PROCEDURE MSG_Get_Message ( PN$Num_Message IN NUMBER )
Is
LC$Item Varchar2(61) := Name_In( 'SYSTEM.TRIGGER_ITEM' ) ;
LC$Valeur Varchar2(100) ;
Begin
LC$Valeur := Name_In( LC$Item ) ;
LC$Valeur := Name_In( 'PARAMETER.NOM_SOCIETE' ) ;
LC$Valeur := Name_In( 'GLOBAL.NOM_VARIABLE' ) ;
Copy( 'Oracle', 'GLOBAL.NOM_VARIABLE' ) ;
End ;
Notez qu'avec les fonctions Copy() et Name_In() les noms des conteneurs ne sont pas précédés du caractère : (deux points)
Visibilité des variables stockées en librairie PL/SQL
Cette visibilité dépend de la nature du chargement d'une forme.
Si une forme est chargée en mémoire avec l'instruction Call_Form(
, SHARE_LIBRARY_DATA,
) alors la valeur des variables stockées en librairie sera visible par toutes les formes partageant la même session.
Si la forme est chargée en mémoire avec l'instruction Call_Form(
, NO_SHARE_LIBRARY_DATA,
) alors la valeur des variables stockées en librairie ne sera visible que par la forme en cours.
Remarque:
Si ce paramètre n'est pas spécifié, il vaut par défaut NO_SHARE_LIBRARY_DATA
Le paramètre SHARE_LIBRARY_DATA permet de partager des variables complexes entre plusieurs formes (records, tableaux, etc.) que les paramètres ou variables globales ne permettent pas.
|