Vous souhaitez enrichir vos programmes Oracle mais êtes confronté aux limites des commandes SQL classiques.
Sans PL/SQL, vous risquez des inefficacités dans le traitement des données et une gestion d’erreurs complexe.
Découvrez comment PL/SQL, avec ses fonctionnalités avancées, peut transformer votre manière de programmer en combinant SQL et logique procédurale.
Maîtriser le langage SQL en environnement SGBDR. SQL n'aura plus de secrets pour vous !
Dans cette section, vous allez explorer des aspects avancés de l’utilisation de PL/SQL pour enrichir et optimiser vos programmes.
Caractéristiques du langage PL/SQL Oracle
Le PL/SQL , ou Procedural Language/SQL , est un langage de programmation intégré à Oracle qui étend SQL. Voici quelques-unes de ses principales caractéristiques :
- Intégration avec SQL :PL/SQL est conçu pour fonctionner harmonieusement avec SQL. Vous pouvez exécuter des commandes SQL directement à l’intérieur d’un bloc PL/SQL, ce qui permet une manipulation de données fluide et efficace.
- Contrôle de flux :PL/SQL vous permet d’utiliser des structures de contrôle comme les boucles (FOR, WHILE) et les conditions (IF, CASE). Cela vous permet d’ajouter de la logique procédurale à vos requêtes.
- Traitement des exceptions :Le PL/SQL dispose d’un système intégré de gestion des erreurs. Cela vous permet de gérer les exceptions de manière élégante, en utilisant des blocsBEGIN,EXCEPTIONetEND.
Le schéma montre comment un bloc PL/SQL est traité par le moteur PL/SQL et le serveur Oracle :
1. Bloc PL/SQL: C’est une unité de code PL/SQL, composée d’instructions SQL et de logique procédurale. Ce bloc est envoyé pour exécution.
2. Moteur PL/SQL: Ce composant, intégré dans Oracle, gère l’exécution des blocs PL/SQL. II décompose le code en deux types d’instructions :
- Instructions PL/SQL :Celles-ci sont envoyées à l’exécuteur d’instructions procédurales,
chargé de gérer la logique procédurale (comme les boucles, les conditions, etc.).
- Instructions SQL :Elles sont transmises directement à l’exécuteur d’instructions SQL.
3. Serveur Oracle: L’exécuteur d’instructions SQL, situé dans le serveur Oracle, traite toutes les instructions SQL (telles que les requêtes SELECT, les mises à jour, etc.) et renvoie les résultats au moteur PL/SQL.
Compilation de blocs PL/SQL : directives
Les directives de compilation influencent la manière dont le bloc PL/SQL est compilé. Voici les points clés à retenir :
- Directives de compilation :Ces instructions permettent d’affiner le comportement de la compilation. Par exemple, vous pouvez optimiser certaines opérations ou spécifier des comportements de référence.
- Bloc imbriqué :Vous pouvez imbriquer des blocs PL/SQL à l’intérieur d’autres blocs, ce qui permet une meilleure organisation du code. Chaque bloc peut avoir ses propres déclarations de variables et ses propres gestionnaires d’exceptions.
Limites et fonctionnement du PL/SQL
Dans cette section, nous examinerons les limites et le fonctionnement des directives en PL/SQL
Contenu d’un bloc PL/SQL
- Langage de manipulation de données (LMD) :Dans un bloc PL/SQL, vous pouvez utiliser des instructions de LMD telles que SELECT, INSERT, UPDATE, et DELETE pour manipuler les données de la base de données.
- Langage de définition des données (LDD) :Contrairement aux LMD, les instructions de LDD comme CREATE, ALTER, et DROP ne sontpas autoriséesà l’intérieur d’un bloc PL/SQL. Cela signifie que vous devez exécuter ces commandes dans un contexte SQL pur.
Gestion des transactions
- Identique à SQL :La gestion des transactions dans PL/SQL suit les mêmes règles que dans SQL. Vous pouvez utiliser des commandes comme COMMIT, ROLLBACK, et SAVEPOINT pour gérer vos transactions.
Utilisation de la directive PRAGMA PL/SQL
Cette section se concentre sur la directive PRAGMA en PL/SQL, en expliquant son utilisation et ses différents types, qui permettent d’influencer la compilation et le comportement des blocs de code, ainsi que leur rôle dans la gestion des erreurs et des transactions.
Le mot clé PRAGMA
- Instruction de compilation :Le mot clé PRAGMA vous permet de spécifier des instructions qui influencent la compilation du bloc. Ces directives ne sont pas exécutées lors de l’exécution du programme.
Les valeurs possibles
- EXCEPTION_INIT :Cette directive vous permet d’associer une exception personnalisée à un numéro d’erreur spécifique. Cela facilite la gestion des erreurs.
- RESTRICT_REFERENCES :Elle définit des restrictions sur les références à d’autres objets de la base de données dans le bloc, ce qui peut améliorer la sécurité et la gestion des dépendances.
- SERIALLY_REUSABLE :Cette directive indique que le bloc est réutilisable en série, ce qui peut améliorer les performances en réduisant le temps de compilation.
- AUTONOMOUS_TRANSACTION :Elle permet d’initier une transaction autonome à l’intérieur d’un bloc PL/SQL. Cela signifie que vous pouvez exécuter des transactions indépendamment de la transaction principale.
La directive AUTONOMOUS_TRANSACTION est cruciale pour effectuer des opérations qui doivent être indépendantes de la transaction en cours. Par exemple, vous pouvez enregistrer des logs d’erreurs sans compromettre l’état de la transaction principale.
Voici un exemple illustrant l’utilisation de AUTONOMOUS_TRANSACTION :
INSERT INTO CATEGORIES VALUES (59, 'test PRAGMA');
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION; -- Déclaration d'une transaction autonome
BEGIN
INSERT INTO CATEGORIES VALUES (10, 'test PRAGMA DANS BLOC PL/SQL');
COMMIT; -- Validation de la transaction autonome
END;
/
SELECT * FROM CATEGORIES; -- Afficher le contenu de la table CATEGORIES
ROLLBACK; -- Annulation de la transaction principale (si applicable)
Explication de chaque partie
- Insertion Initiale :
INSERT INTO CATEGORIES VALUES (59, 'test PRAGMA');
Cette ligne insère une entrée dans la table CATEGORIES avec l’ID 59 et le nom ‘test PRAGMA’. Cette insertion est une action directe dans la base de données.
- Déclaration d’une Transaction Autonome :
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION; -- Déclaration d'une transaction autonome
Cette déclaration indique que le bloc PL/SQL suivant fonctionnera comme une transaction indépendante. Cela signifie que toute opération effectuée dans ce bloc peut être validée ou annulée indépendamment de la transaction principale.
- Bloc PL/SQL avec Insertion :
BEGIN
INSERT INTO CATEGORIES VALUES (10, 'test PRAGMA DANS BLOC PL/SQL'); -- Insertion dans le bloc autonome
COMMIT; -- Validation de la transaction autonome
END;
/
Ici, vous effectuez une insertion dans la table CATEGORIES avec l’ID 10 et le nom ‘test PRAGMA DANS BLOC PL/SQL’.
La directive COMMIT valide cette transaction autonome, garantissant que cette insertion sera permanente dans la base de données, même si la transaction principale est annulée ultérieurement.
- Sélection des Données :
SELECT * FROM CATEGORIES; -- Afficher le contenu de la table CATEGORIES
Cette commande permet d’afficher toutes les entrées de la table CATEGORIES. À ce stade, vous verrez les deux entrées :
- Rollback :
ROLLBACK; -- Annulation de la transaction principale (si applicable)
Cette ligne effectue un rollback sur la transaction principale, ce qui signifie que si d’autres modifications avaient été effectuées dans cette transaction, elles seraient annulées.
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
Quelles sont les principales caractéristiques du PL/SQL ?
Comment fonctionne la gestion des transactions en PL/SQL ?
Quelle est l'importance de la directive PRAGMA en PL/SQL ?
Pourquoi est-il important de traiter les exceptions en PL/SQL ?
Comment les blocs PL/SQL sont-ils structurés et exécutés ?
Conclusion
En maîtrisant les caractéristiques de PL/SQL, vous pouvez optimiser vos applications Oracle pour une manipulation de données efficace et une gestion des erreurs fiable. Quel aspect de PL/SQL trouvez-vous le plus prometteur pour votre projet ?