Blog Alphorm Logo de blog informatique spécialisé en technologie et solutions IT
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Tout sur les packages PL/SQL
Agrandisseur de policeAa
Blog AlphormBlog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Search
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Suivez-nous
© Alphorm 2024 - Tous droits réservés
Bases de donnéesDéveloppement

Tout sur les packages PL/SQL

L'Équipe Alphorm Par L'Équipe Alphorm 22 janvier 2025
Partager
Partager

Organiser et structurer le code dans les bases de données peut être un défi complexe.

Sans une bonne structuration, le code devient difficile à maintenir, et la performance de l’application peut en souffrir.

Les packages PL/SQL offrent une solution efficace pour encapsuler et organiser le code, améliorant ainsi la gestion et la performance.

Table de matière
Regrouper avec Packages PL/SQLAvantages des Packages PL/SQLStructure de Package PL/SQLCréer un Package PL/SQLExemple: Package variablesConstantesExemple: Package variableAppCorps de Package PL/SQLExemple: Package verifDataTester Fonctions de PackageFAQConclusion

Formation Le langage PL/SQL : Le Guide Complet

Maîtriser le langage SQL en environnement SGBDR. SQL n'aura plus de secrets pour vous !

Découvrir cette formation

Les packages sont des éléments essentiels pour organiser et structurer le code dans les bases de données, notamment en PL/SQL. Ils permettent de regrouper de manière cohérente les procédures , fonctions , variables , et autres composants nécessaires à la gestion des données et à l’exécution de traitements spécifiques. En utilisant des packages, vous pouvez encapsuler des fonctionnalités, protéger l’accès aux données sensibles, et améliorer les performances en réduisant le nombre d’opérations de chargement. Dans cette section, nous allons explorer la structure, les avantages, et la syntaxe de création des packages, ainsi que les bonnes pratiques pour en tirer le meilleur parti.

Question : Qu’est-ce qu’un Package ?

Un package est une structure de programmation utilisée pour regrouper logiquement des procédures, fonctions, variables, types de données et curseurs. Dans les systèmes de gestion de bases de données comme Oracle, il permet de mieux organiser et encapsuler le code afin de faciliter la maintenance et l’utilisation des éléments.

Diagramme des éléments d'un package PL/SQL

Regrouper avec Packages PL/SQL

Dans un package, vous pouvez regrouper des procédures et des fonctions pour organiser votre code et rendre l’application plus modulaire. Cela signifie que toutes les opérations liées à une certaine logique d’affaires peuvent être encapsulées au sein du même package. Par exemple, si vous avez plusieurs fonctions et procédures pour gérer les employés, vous pouvez les placer dans un package Gestion_Employes .

Un package est divisé en deux sections principales :

  • Section de déclaration (spécification) :elle contient les déclarations d’éléments que l’on souhaite rendre accessibles à l’extérieur du package, comme des variables, des curseurs, des procédures et des fonctions.
  • Section de traitement (corps) :elle contient les implémentations des éléments déclarés dans la spécification, mais peut aussi inclure des éléments privés non visibles à l’extérieur du package.

Avantages des Packages PL/SQL

L’utilisation des packages offre plusieurs avantages :

  • Protection des données :le package permet de masquer l’implémentation interne et de ne rendre visibles que les éléments nécessaires.
  • Amélioration des performances :les packages sont chargés en mémoire une seule fois par session, ce qui réduit les opérations d’E/S et améliore les performances lors de l’appel de plusieurs éléments du package.
  • Persistance des objets :les objets tels que les variables peuvent conserver leurs valeurs au sein du package durant toute la session, ce qui permet de conserver des informations entre différents appels.
Astuce Pratique : Utilisez des packages pour regrouper les procédures et fonctions qui sont souvent appelées ensemble afin d’améliorer l’efficacité et la lisibilité de votre code.

Structure de Package PL/SQL

Voici un schéma pour représenter la séparation entre la spécification et le corps du package :

Diagramme illustrant la structure package PL/SQL

Éléments du schéma :

  • Éléments publics :déclarés dans la section de spécification, accessibles depuis l’extérieur du package.
  • Éléments privés :déclarés dans le corps, non accessibles directement depuis l’extérieur.
  • Spécification du package :Cette section contient les déclarations de toutes les procédures, fonctions, variables et curseurs qui seront accessibles publiquement.
  • Corps du package :C’est ici que se trouvent les implémentations des procédures et fonctions. Vous pouvez également y inclure des variables ou procédures privées qui ne seront pas visibles à l’extérieur.
Infos : La séparation entre la spécification et le corps permet d’améliorer l’encapsulation et de cacher l’implémentation.

Créer un Package PL/SQL

Pour créer un package, vous pouvez utiliser la syntaxe suivante :

				
					
 CREATE [ OR REPLACE ] PACKAGE nom_package
{ IS | AS }
-- Déclarations de variables et types
variable1 TYPE;
variable2 TYPE;
-- Déclaration de curseurs
CURSOR nom_curseur IS SELECT ...;
-- Déclaration des procédures et fonctions
PROCEDURE nom_procedure(paramètres);
FUNCTION nom_fonction(paramètres) RETURN type;
END nom_package;

				
			

Explication de la syntaxe :

  • CREATE OR REPLACE PACKAGE :crée un nouveau package ou remplace un package existant.
  • { IS | AS } :mots-clés utilisés pour définir le début de la spécification du package.
  • variable TYPE :déclaration de variables utilisables dans le package.
  • CURSOR :déclaration de curseurs pour les ensembles de données.
  • PROCEDURE et FUNCTION :déclaration des procédures et fonctions.
Erreur Courante : Ne pas oublier de créer le corps du package (avec CREATE PACKAGE BODY) pour y implémenter les procédures et fonctions.

Ces exemples vous aideront à mieux comprendre comment exploiter la puissance des packages pour simplifier la gestion des données et améliorer la lisibilité du code.

Exemple: Package variablesConstantes

Dans ce premier exemple, le package variablesConstantes est créé pour contenir des constantes et variables que l’on peut réutiliser dans différents blocs PL/SQL.

Voici le code pour créer le package :

				
					
 CREATE OR REPLACE PACKAGE variablesConstantes
IS
datesysteme DATE := SYSDATE;
nomuser VARCHAR(50) := USER;
END variablesConstantes;

				
			
  • datesysteme DATE := SYSDATE; : Cette variable contient ladate systèmeau moment où le package est exécuté.
  • nomuser VARCHAR(50) := USER; : Cette variable contient lenom de l’utilisateuractuel.

Une fois ce package créé, il est stocké dans le dossier des packages de SQL Developer, où il peut être consulté et appelé depuis d’autres programmes.

Arborescence des packages PL/SQL Oracle

Pour utiliser ce package, on peut écrire un bloc PL/SQL comme suit :

				
					
 SET SERVEROUTPUT On;
BEGIN
DBMS_OUTPUT.PUT_LINE('Date système : ' || variablesConstantes.datesysteme);
DBMS_OUTPUT.PUT_LINE('Utilisateur : ' || variablesConstantes.nomuser);
END;
/

				
			
  • DBMS_OUTPUT.PUT_LINE affiche les valeurs de datesysteme et nomuser.
  • La syntaxe variablesConstantes.datesysteme et variablesConstantes.nomuser permet d’accéder aux variables du package.

Résultat attendu : Cela affichera quelque chose comme :

Affichage de la date et de l'utilisateur PL/SQL
Infos :
Utilisation du Préfixe : On accède aux variables du package en utilisant le nom du package suivi du point (variablesConstantes.datesysteme).
Portée des Variables : Les variables dans le package sont globales pour toute session et peuvent être utilisées dans d’autres blocs PL/SQL sans avoir besoin de les redéclarer.

Exemple: Package variableApp

Dans ce deuxième exemple, le package variableApp contient des constantes utilisées pour des opérations de requête.

Voici le code pour créer le package :

				
					
 CREATE OR REPLACE PACKAGE variableApp
IS
ville clients.ville%TYPE := 'Toulouse';
pays CONSTANT clients.pays%TYPE := 'France';
END variableApp;

				
			
  • ville clients.ville%TYPE := ‘Toulouse’; : Cette variable contient la ville « Toulouse », en utilisant le même type que la colonne ville de la table clients.
  • pays CONSTANT clients.pays%TYPE := ‘France’; : Cette constante contient la valeur « France », avec le même type que la colonne pays de la table clients. Elle est déclarée comme constante, ce qui signifie qu’elle ne peut pas être modifiée.

Pour utiliser ce package, on peut écrire un bloc PL/SQL comme suit :

				
					
 DECLARE
var_nbr NUMBER;
BEGIN
SELECT COUNT(*) INTO var_nbr
FROM clients
WHERE ville = variableApp.ville AND pays = variableApp.pays;
END;
/

				
			
  • La requête SQL compte le nombre de clients dont la ville est Toulouse et le pays est la France , en utilisant les variables définies dans le package variableApp.
  • DBMS_OUTPUT.PUT_LINE affiche le nombre de clients trouvé.

Et voici son résultat lors de son exécution :

Nombre clients France à Toulouse: 2
Astuce Pratique : Utiliser des packages pour stocker des valeurs comme ville et pays permet de centraliser les informations. Ainsi, si la ville ou le pays de référence change, il suffit de modifier la valeur dans le package sans devoir toucher à tous les blocs de code qui l’utilisent.

Corps de Package PL/SQL

Une fois la spécification du package définie, le corps du package (ou package body ) contient l’implémentation des procédures et fonctions déclarées dans la spécification. Le corps permet d’encapsuler la logique des opérations, en ne laissant accessible que la signature de celles-ci dans la spécification, améliorant ainsi l’encapsulation et la modularité de l’application.

La syntaxe de création d’un corps de package est la suivante :

				
					
 CREATE [ OR REPLACE ] PACKAGE BODY <nom_package>
{ IS | AS }
[ Déclaration des variables et des types ]
[ Déclaration des curseurs ]
[ Déclaration des procédures et des fonctions ]
[ BEGIN
<instructions_plsql>;
[ EXCEPTIONS
<gestion_exception>
END <nom_package>;

				
			

Explications :

  • Déclaration des variables et types :Les variables et types peuvent être définis ici pour un usage interne au package.
  • Déclaration des curseurs :Vous pouvez déclarer des curseurs pour parcourir des ensembles de résultats.
  • Déclaration des procédures et fonctions :C’est ici que vous implémentez la logique de vos fonctions et procédures.
  • Bloc BEGIN et gestion des exceptions :Vous pouvez définir un bloc BEGIN pour des instructions PL/SQL exécutées dès que le package est initialisé, et gérer les exceptions.

Exemple: Package verifData

Voici un exemple illustrant la création d’un package verifData qui contient deux fonctions :

  • verifClient :retourne true si un client existe.
  • verifSalarie :retourne true si un salarié existe.
  • Création de la Spécification du Package
				
					
 CREATE OR REPLACE PACKAGE verifData IS
function verifClient(arg_numcli clients.numero_cli%type) RETURN BOOLEAN;
function verifSalarie(arg_numsal salaries.numero_sal%type) RETURN BOOLEAN;
nbr_ligne NUMBER;
END verifData;

				
			
  • Création du Corps du Package
				
					
 CREATE OR REPLACE PACKAGE BODY verifData IS
FUNCTION verifClient(arg_numcli clients.numero_cli%type) RETURN BOOLEAN AS
BEGIN
verifData.nbr_ligne := 0;
SELECT COUNT(*) INTO verifData.nbr_ligne FROM clients
WHERE numero_cli = arg_numcli;
IF verifData.nbr_ligne > 0 THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
END verifClient;
FUNCTION verifSalarie(arg_numsal salaries.numero_sal%type) RETURN BOOLEAN AS
BEGIN
verifData.nbr_ligne := 0;
SELECT COUNT(*) INTO verifData.nbr_ligne FROM salaries
WHERE numero_sal = arg_numsal;
IF verifData.nbr_ligne > 0 THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
END verifSalarie;
END verifData;

				
			

Explications des Points Clés

  • Variables Globales dans le Corps :Ici, nbr_ligne est une variable partagée entre les fonctions verifClient et verifSalarie.
  • Fonctions de Vérification :Les fonctions verifClient et verifSalarie effectuent une vérification simple de l’existence d’un enregistrement dans les tables clients et salaries.

Une fois le package créé avec succès, vous pouvez tester les fonctions ainsi :

Tester Fonctions de Package

  • Vérification d’un Salarié
				
					
 DECLARE
var_bool BOOLEAN;
BEGIN
var_bool := verifData.verifSalarie(2000);
IF var_bool THEN
DBMS_OUTPUT.PUT_LINE('Le salarié existe');
ELSE
DBMS_OUTPUT.PUT_LINE('Le salarié n''existe pas');
END IF;
END;

				
			

Et voici son résultat lors de son exécution :

Message d'erreur PL/SQL: Le salarié n'existe pas
  • Vérification d’un Client
				
					
 DECLARE
var_bool BOOLEAN;
BEGIN
var_bool := verifData.verifClient(10);
IF var_bool THEN
DBMS_OUTPUT.PUT_LINE('Le client existe');
ELSE
DBMS_OUTPUT.PUT_LINE('Le client n''existe pas');
END IF;
END;

				
			

Et voici son résultat lors de son exécution :

Message indiquant que le client existe

Pour tester si notre programme fonctionne correctement, nous allons lister les clients existants dans la table clients avec la commande SELECT * FROM clients et obtenir le résultat suivant :

Tableau affichant des données client en PL/SQL
Erreur Courante :
Oubli de RETURN dans la Fonction : Assurez-vous que chaque fonction renvoie bien une valeur (TRUE ou FALSE dans cet exemple).
Variable Non Initialisée : Si nbr_ligne n’est pas initialisé à 0, les résultats peuvent être imprévisibles.

Formez-vous gratuitement avec Alphorm !

Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.

Démarrer gratuitement
illustration processus de paiement en ligne avec étapes claires et convivialité

FAQ

Qu'est-ce qu'un package en PL/SQL ?
Un package en PL/SQL est une structure de programmation qui regroupe logiquement des procédures, fonctions, variables et types de données. Utilisé dans les systèmes de gestion de bases de données comme Oracle, il permet une meilleure organisation et encapsulation du code, facilitant ainsi la maintenance et l’utilisation des éléments. Les packages aident à structurer le code pour une gestion plus efficace des données.
Quels sont les avantages des packages PL/SQL ?
Les packages PL/SQL offrent plusieurs avantages significatifs. Ils protègent les données en masquant l’implémentation interne, ce qui permet de n’exposer que les éléments nécessaires. De plus, ils améliorent les performances en réduisant les opérations d’E/S, car les packages sont chargés en mémoire une seule fois par session. Cela permet également la persistance des objets, maintenant les valeurs des variables au sein du package pendant toute la session.
Comment structurer un package PL/SQL ?
Un package PL/SQL est divisé en deux sections principales : la spécification et le corps. La spécification contient les déclarations d’éléments accessibles à l’extérieur, comme des variables et des fonctions. Le corps du package inclut les implémentations de ces éléments et peut aussi contenir des éléments privés non visibles à l’extérieur. Cette structure améliore l’encapsulation et la modularité du code.
Comment créer un package en PL/SQL ?
Pour créer un package en PL/SQL, utilisez la syntaxe ‘CREATE OR REPLACE PACKAGE nom_package IS/AS’. Cette commande est suivie par la déclaration des variables, curseurs, procédures et fonctions que le package contiendra. Vous devez également créer un corps de package avec ‘CREATE OR REPLACE PACKAGE BODY nom_package’ pour implémenter ces procédures et fonctions, assurant ainsi l’encapsulation.
Quels exemples de packages PL/SQL pouvez-vous fournir ?
Un exemple de package PL/SQL est ‘variablesConstantes’, qui stocke des constantes et variables pour une réutilisation facile. Un autre exemple est ‘variableApp’, contenant des constantes pour les opérations de requête. Ces packages permettent de centraliser les informations et de simplifier la gestion des données. Ils illustrent comment encapsuler des logiques spécifiques pour une efficacité améliorée.

Conclusion

Les packages PL/SQL sont des composants puissants pour gérer efficacement le code en bases de données. En exploitant leur structure, vous pouvez améliorer la performance et la lisibilité de vos applications. Quels autres aspects des packages PL/SQL aimeriez-vous explorer davantage ?

ÉTIQUETÉ : PL/SQL
Facebook
Twitter
LinkedIn
Email
WhatsApp
Par L'Équipe Alphorm
Démocratiser la Connaissance Informatique pour Tous !
Suivre :
L'Équipe Alphorm, c'est la démocratisation de la connaissance informatique. Passionnés et dévoués, nous sommes là pour vous guider vers le succès en rendant la technologie accessible à tous. Rejoignez notre aventure d'apprentissage et de partage. Avec nous, le savoir IT devient une ressource inspirante et ouverte à tous dans un monde numérique en constante évolution.

Derniers Articles

  • Techniques pour gérer les fichiers texte en C#
  • Créer et lire un fichier CSV avec C#
  • JSON : Comprendre et Utiliser Efficacement
  • Créer une Base SQLite dans C#
  • Lecture des données SQLite simplifiée
Laisser un commentaire Laisser un commentaire

Laisser un commentaire Annuler la réponse

Vous devez vous connecter pour publier un commentaire.

Blog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Tout sur les packages PL/SQL

© Alphorm - Tous droits réservés