Le guide Oracle Forms 9i/10g


précédentsommairesuivant

VII. Les bibliothèques PL/SQL (.PLL)

VII-A. 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.

VII-B. 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

VII-C. Mise en œuvre

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))

[ALT-PASTOUCHE]

le nœud 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 nœud 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 nœud Bibliothèques PL/SQL puis Image non disponible
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 nœud Unités de programme puis Image non disponible


Supprimer une fonction

Sélectionnez la fonction puis Image non disponible


Attacher la librairie à une forme, un menu ou un état

Ouvrez le module correspondant
Cliquez le nœud Bibliothèques attachées puis Image non disponible

[ALT-PASTOUCHE]

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:

 
Sélectionnez

-- Procédure MSG_Get_Message() stockée en librairie MSG.PLL --
PROCEDURE MSG_Get_Message ( PN$Num_Message IN NUMBER ) 
Is
   LC$Item  Varchar2(61) := Name_In( 'SYSTEM.TRIGGER_ITEM' ) ;
   LC$Valeur  Varchar2(100) ;
Begin
   -- lecture valeur de l'item en cours -
   LC$Valeur := Name_In( LC$Item ) ;

   -- lecture du paramètre de la forme --
   LC$Valeur := Name_In( 'PARAMETER.NOM_SOCIETE' ) ;

   -- lecture d'une variable globale --
   LC$Valeur := Name_In( 'GLOBAL.NOM_VARIABLE' ) ;

   -- écriture d'une valeur dans la variable globale --
   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.


précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2005 SheikYerbouti. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.