La gestion des données est cruciale dans le développement de programmes PL/SQL.
Sans une bonne compréhension des variables et de leur manipulation, votre programme peut devenir inefficace et difficile à maintenir.
Cet article couvre tout ce que vous devez savoir sur l’utilisation des variables en PL/SQL pour améliorer vos compétences en développement.
Maîtriser le langage SQL en environnement SGBDR. SQL n'aura plus de secrets pour vous !
Dans ce chapitre, vous allez découvrir l’importance des variables dans PL/SQL, leur rôle dans la manipulation de données et la manière dont elles facilitent la gestion des informations dans vos programmes PL/SQL. Les variables vous permettent de stocker temporairement des valeurs qui peuvent être utilisées et modifiées tout au long de l’exécution de votre programme. Vous apprendrez comment les déclarer, les manipuler et les convertir entre différents types de données.
Les objectifs principaux de ce chapitre sont les suivants :
- Connaître les types de données des variables :Vous apprendrez à identifier les différents types de données disponibles dans PL/SQL.
- Déclarer et manipuler des variables en PL/SQL :Vous saurez comment déclarer correctement des variables et les manipuler au sein d’un bloc PL/SQL.
Déclaration de variables PL/SQL
La déclaration de variables est une étape essentielle dans la création de programmes en PL/SQL. Avant de pouvoir utiliser une variable, vous devez la déclarer en spécifiant son type de données et, éventuellement, une valeur initiale.
Syntaxe de déclaration
La syntaxe générale pour déclarer une variable dans PL/SQL est la suivante :
[CONSTANT] TYPE [NOT NULL] [{DEFAULT | :=} VALEUR];
- nom_variable :Nom de la variable.
- CONSTANT :Si précisé, la variable sera une constante et ne pourra pas être modifiée après sa première affectation.
- TYPE :Spécifie le type de données de la variable.
- NOT NULL :La variable doit toujours avoir une valeur (ne peut pas être nulle).
- DEFAULT | := VALEUR: Permet de définir une valeur initiale à la variable.
Types de données en PL/SQL
PL/SQL offre une large variété de types de données, chacun conçu pour des usages spécifiques. Il est important de choisir le bon type de données pour chaque variable afin d’optimiser la gestion des ressources et la performance du programme.
Type de Donnée | Description | Taille (en octets) | Exemples d’Utilisation |
---|---|---|---|
VARCHAR2 | Chaînes de caractères de longueur variable. | 1 à 4000 | nom VARCHAR2(50); |
CHAR | Chaînes de caractères de longueur fixe. | 1 à 2000 | code CHAR(5); |
NUMBER | Nombres, y compris les entiers et décimaux. | 1 à 38 chiffres | age NUMBER; ou prix NUMBER(10, 2); |
DATE | Valeurs de date et heure. | 7 | date_naissance DATE; |
BOOLEAN | Valeurs logiques : TRUE, FALSE ou NULL. | 1 | est_actif BOOLEAN; |
BLOB | Données binaires de grande taille (Binary Large Object). | Taille variable | image BLOB; |
CLOB | Données de caractères de grande taille (Character Large Object). | Taille variable | texte CLOB; |
BFILE | Référence à un fichier externe sur le système de fichiers. | Taille variable | document BFILE; |
PL/SQL RECORD | Structure composite contenant des champs de différents types. | Taille variable | TYPE personne IS RECORD (nom VARCHAR2(50), age NUMBER); |
PL/SQL TABLE | Table associative pour stocker des ensembles de valeurs. | Taille variable | TYPE tab_nombre IS TABLE OF NUMBER; |
VARCHAR2 est le type de données le plus utilisé pour les chaînes de caractères en PL/SQL, car il permet de stocker des valeurs de longueur variable.
NUMBER peut être utilisé pour stocker à la fois des entiers et des nombres à virgule flottante, et vous pouvez spécifier le nombre de chiffres avant et après la virgule.
Les types BLOB et CLOB sont utilisés pour gérer des données volumineuses, telles que des images ou de longs textes, respectivement.
Les types RECORD et TABLE sont utilisés pour la manipulation de structures de données complexes en PL/SQL.
Conversion de données PL/SQL
La conversion de types de données peut être nécessaire lorsque vous travaillez avec différentes opérations nécessitant des types de données spécifiques. Dans PL/SQL, il existe deux types de conversion :
Conversion explicite
Vous pouvez convertir explicitement un type de données en un autre en utilisant des fonctions de conversion comme :
- TO_DATE :Pour convertir une chaîne de caractères en date.
- TO_CHAR :Pour convertir des nombres ou des dates en chaînes de caractères.
Voici un exemple de conversion explicite, qui vous permet de transformer un type de données en un autre à l’aide de fonctions spécifiques.
DECLARE
v_date DATE;
BEGIN
v_date := TO_DATE('2024-10-23', 'YYYY-MM-DD');
END;
Conversion implicite
PL/SQL effectue automatiquement des conversions implicites lorsqu’il rencontre une situation où une conversion de type est nécessaire. Cela se produit généralement lors :
- Évaluation d’expressions :PL/SQL convertit les types de données pour résoudre l’expression.
- Affectation des variables :Si une variable d’un type doit recevoir une valeur d’un autre type, le moteur PL/SQL effectue la conversion.
Voici un exemple de conversion implicite, où PL/SQL effectue automatiquement des conversions de types de données lorsque cela est nécessaire.
DECLARE
v_num NUMBER;
v_str VARCHAR2(10);
BEGIN
v_num := 123;
v_str := v_num; -- Conversion implicite de NUMBER à VARCHAR2
END;
Manipulation de variables PL/SQL
Après avoir déclaré une variable, vous pouvez lui affecter des valeurs en utilisant l’opérateur d’affectation (:=) . L’évaluation des expressions et l’affectation de variables sont courantes dans les blocs PL/SQL.
Évaluation d’expressions
Les expressions permettent de manipuler les variables et de réaliser des calculs ou des transformations. Les valeurs calculées peuvent ensuite être stockées dans des variables.
Voici un exemple illustrant l’évaluation d’une expression :
DECLARE
v_result NUMBER;
BEGIN
v_result := 10 * 5 + 2; -- Évaluation de l'expression
END;
Affectation de variables
L’opération d’affectation est utilisée pour donner une nouvelle valeur à une variable, qui peut provenir d’une expression ou d’une fonction.
Voici un exemple illustrant l’affectation d’une variable :
DECLARE
v_nom VARCHAR2(50);
BEGIN
v_nom := 'la formation PL SQL'; -- Affectation d'une valeur à la variable
END;
Exemple complet en PL/SQL
Cet exemple illustre l’utilisation des variables en PL/SQL dans un bloc anonyme et la façon dont vous pouvez les initialiser et afficher leurs valeurs via la procédure DBMS_OUTPUT.PUT_LINE
SET SERVEROUTPUT ON;
DECLARE
id_user INTEGER := 1001; -- Valeur d'exemple pour l'identifiant utilisateur
nom_user VARCHAR2(50) := USER; -- Nom de l'utilisateur courant (doit être VARCHAR2)
date_system DATE := SYSDATE; -- Date système courante
ma_variable CHAR(20) := 'Formation PL/SQL'; -- Une variable de chaîne de caractères fixe
BEGIN
-- Afficher les variables
DBMS_OUTPUT.PUT_LINE('ID de le utilisateur : ' || id_user);
DBMS_OUTPUT.PUT_LINE('Nom de le utilisateur : ' || nom_user);
DBMS_OUTPUT.PUT_LINE('Date système : ' || TO_CHAR(date_system, 'DD-MM-YYYY HH24:MI:SS')); -- Conversion de la date au format chaîne
DBMS_OUTPUT.PUT_LINE('Valeur de ma_variable : ' || ma_variable);
END;
/
Explication de l’exemple :
Activation de la sortie serveur :
- La commande SET SERVEROUTPUT ON; est utilisée pour activer la sortie dans SQL*Plus ou Oracle SQL Developer. Sans cette commande, la procédure DBMS_OUTPUT.PUT_LINE n’affichera pas le résultat à l’écran.
Déclaration des variables :
- id_user INTEGER := 1001;: Une variable entière nomméeid_userest créée avec une valeur initiale de1001.
- nom_user VARCHAR2(50) := USER;: Une variable de type chaîne de caractères (VARCHAR2) est définie pour stocker le nom de l’utilisateur actuel de la base de données. La fonctionUSERest une fonction Oracle intégrée qui retourne le nom de l’utilisateur courant.
- date_system DATE := SYSDATE;: La variabledate_systemest déclarée avec le type DATE, et elle est initialisée avec la date et l’heure actuelles en utilisantSYSDATE.
- ma_variable CHAR(20) := ‘Formation PL/SQL’;: Une variable de type CHAR(20) est déclarée, avec une valeur par défaut de « Formation PL/SQL ». La longueur du type CHAR est fixe (ici, 20 caractères).
Affichage des variables :
DBMS_OUTPUT.PUT_LINE est utilisé pour afficher le contenu des variables dans la console. Voici ce qui se passe :
- ID de l’utilisateur :’ || id_user: Affiche l’ID utilisateur avec sa valeur (1001).
- Nom de l’utilisateur :’ || nom_user: Affiche le nom de l’utilisateur de la session de base de données.
- Date système :’ || TO_CHAR(date_system, ‘DD-MM-YYYY HH24:MI:SS’): Convertit la date et l’heure au format chaîne de caractères et l’affiche au formatJJ-MM-AAAA HH:MM:SS.
- Valeur de ma_variable :’ || ma_variable: Affiche la valeur dema_variable, qui est « Formation PL/SQL ».
Bloc BEGIN…END; :
- Tout le code entre BEGIN et END; est le corps du programme où les instructions sont exécutées.
Lorsque vous exécutez ce bloc PL/SQL avec SERVEROUTPUT activé, vous obtiendrez une sortie similaire à celle-ci :
Autre exemple avec des constantes :
Dans cet exemple, nous ajoutons des constantes en PL/SQL. Les constantes sont des variables dont la valeur ne peut pas être modifiée après leur initialisation.
SET SERVEROUTPUT ON;
DECLARE
-- Déclaration des constantes
PI CONSTANT NUMBER := 3.14159; -- Constante représentant la valeur de Pi
MAX_USERS CONSTANT INTEGER := 100; -- Limite maximale des utilisateurs
-- Déclaration des variables
rayon NUMBER := 5; -- Rayon d'un cercle
surface NUMBER; -- Variable pour stocker la surface du cercle
BEGIN
-- Calcul de la surface d'un cercle
surface := PI * rayon * rayon; -- Utilisation de la constante PI
-- Affichage des résultats
DBMS_OUTPUT.PUT_LINE('Rayon du cercle : ' || rayon);
DBMS_OUTPUT.PUT_LINE('Surface du cercle : ' || surface);
DBMS_OUTPUT.PUT_LINE('Limite maximale d\'utilisateurs : ' || MAX_USERS);
END;
/
Explication de cet exemple :
Constantes :
- PI CONSTANT NUMBER := 3.14159;: La constantePIest définie avec une valeur fixe de 3.14159. Le mot-cléCONSTANTempêche la modification de cette valeur.
- MAX_USERS CONSTANT INTEGER := 100;: Cette constante fixe le nombre maximum d’utilisateurs à 100.
Variables :
- rayon NUMBER := 5;: Une variable représentant le rayon d’un cercle est initialisée à5.
- surface NUMBER; :Une variable non initialisée qui sera utilisée pour calculer la surface du cercle.
Calcul et affichage :
- La formulesurface := PI * rayon * rayon;calcule la surface du cercle en utilisant la constantePIet la variablerayon.
- Les résultats sont ensuite affichés avec DBMS_OUTPUT.PUT_LINE .
Lorsque vous exécutez ce bloc PL/SQL avec SERVEROUTPUT activé, vous obtiendrez une sortie comme suivant :
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.
FAQ
Qu'est-ce qu'une variable en PL/SQL ?
Quels sont les types de données disponibles en PL/SQL ?
Comment déclarer une variable en PL/SQL ?
Comment convertir des types de données en PL/SQL ?
Comment affecter et manipuler des variables en PL/SQL ?
Conclusion
Les variables en PL/SQL sont essentielles pour une gestion efficace des données. Comment prévoyez-vous d’utiliser ces connaissances pour optimiser vos programmes PL/SQL ?