Introduction au PL/SQL
Introduction
Ce chapitre présente certains concepts de base. Il a pour objectif de préparer le lecteur aux chapitres suivants. Dans cette section, nous allons présenter quelques définitions de base :
Un système de gestion de bases de données (SGBD) est un ensemble de programmes qui permettent à des utilisateurs de créer et de maintenir une base de données. Les activités prises en charge sont la définition d’une base de données (spécification des types de données à stocker), la construction d’une base de données (stockage des données proprement dites) et la manipulation des données (principalement ajouter, supprimer et retrouver des données). Les SGBD les plus connus sont Oracle, MySQL, SQL Server, PostgreSQL, DB2, SyBase et Microsoft Access.
Une base de données relationnelle est une collection bien structurée de données opérationnelles interreliées. C’est une entité cohérente logiquement et véhiculant une certaine sémantique. Elle est mise à la disposition de plusieurs utilisateurs et sert aussi bien à des traitements par lots qu’à des traitements à réponse immédiate.
La base de données relationnelle est constituée d’un ensemble de tables (relations).
Une table est une collection de données...
Présentation d’Oracle
1. Définition
Oracle est un système de gestion de bases de données relationnelles (SGBDR), édité par la société du même nom (Oracle Corporation - http://www.oracle.com), leader mondial des bases de données.
Oracle Corporation, société américaine située en Californie, développe et commercialise le système de gestion de bases de données et l’ensemble de produits de développement. Oracle a des filiales dans un grand nombre de pays. La filiale française (Oracle France) a été créée en 1986.
2. Historique
En 1977, Larry Ellison, Bob Miner et Ed Oates fondent la société Software Development Laboratories (SDL). L’article de Edgar Frank Codd (1923-2003), « A Relational Model of Data for Large Shared Data Banks », Communications of the ACM paru en 1970, fait devenir le mathématicien et l’ancien pilote de la RAF (Royal Air Force) durant la Seconde Guerre mondiale, inventeur du modèle relationnel et de SQL. Les associés de SDL devinent le potentiel des concepts de Codd et se lancent dans l’aventure en baptisant leur logiciel « Oracle ». En 1979, SDL devient Relational Software Inc. (RSI) qui donnera naissance à la société Oracle Corp., en 1983. La première version du SGBD s’appelle RSI-1 et utilise SQL.
En 1984, la première version d’Oracle (Oracle 4) est commercialisée sur les machines IBM avec le système d’exploitation VM. C’est une première vers la gestion de transactions simultanées.
En 1985, Oracle 5 est sorti, avec l’utilisation client-serveur grâce au logiciel SQL*Net.
En 1986, Oracle a été porté sur la plate-forme 8086.
En 1988, Oracle 6 est disponible sur un grand nombre de plates-formes. De nouvelles fonctionnalités apportent beaucoup d’améliorations : la gestion du verrouillage bas niveau et la mise à jour en différé....
Le langage SQL
SQL (Structured Query Language) est un langage de requêtes ensembliste et assertionnel proposé par le SGBD. Il sert à la création, à l’administration, à l’interrogation et aux manipulations des bases de données relationnelles. Il a fait l’objet de plusieurs normes ANSI/ISO dont la plus répandue aujourd’hui est la norme SQL 2011.
Le langage SQL compte trois « sous-langages » :
-
Le langage de définition des données (LDD), qui permet de créer, modifier et supprimer les objets de la base de données. Les instructions de base du LDD sont :
CREATE TABLE
Créer une table.
ALTER TABLE
Ajouter ou modifier une colonne.
DROP TABLE
Supprimer une table.
CREATE INDEX
Créer un index.
DROP INDEX
Supprimer un index.
TRUNCATE
Supprimer tous les enregistrements d’une table.
-
Le langage de manipulation des données (LMD), qui permet d’interroger, d’insérer, de modifier et de supprimer des données dans la base. Les commandes de base du LMD sont :
INSERT
Insérer des enregistrements dans une table.
UPDATE
Modifier des données dans une table.
DELETE
Supprimer des enregistrements dans une table.
SELECT
Extraire des données à partir d’une base.
COMMIT
Valider les opérations de mise à jour pour la transaction en cours.
ROLLBACK
Annuler les opérations de mise...
Généralités sur PL/SQL
1. Présentation et historique
PL/SQL (Procedural Langage/Structured Query Langage) est un langage procédural d’Oracle Corporation étendant SQL ; il est disponible dans Oracle Database (depuis la version 7). Il permet de combiner les avantages d’un langage de programmation classique qui offre les structures algorithmiques (les instructions conditionnelles et répétitives, les sous-programmes...) avec les possibilités de manipulation de données offertes par SQL.
Le langage PL/SQL est utilisé à partir de l’environnement SQL*Plus et par les outils d’Oracle (Forms, Report et Graphics). Il sert à programmer des procédures, des fonctions, des triggers, et donc plus généralement, des packages.
PL/SQL a été développé par Oracle à la fin des années 1980. À l’origine, PL/SQL avait des capacités limitées. Mais cela a changé au début des années 1990.
Le langage PL/SQL a évolué avec l’avènement des concepts orientés objet dans Oracle 8i et 9i. PL/SQL n’est plus un langage purement procédural. Il est maintenant à la fois un langage de programmation procédural et orienté objet.
À partir de la version 11g d’Oracle, PL/SQL a changé d’un langage interprété...
L’environnement PL/SQL
1. Moteur PL/SQL
Le langage PL/SQL est un outil robuste qui permet d’écrire des programmes et de les déployer dans une base de données. Il peut simplifier le développement des applications, optimiser l’exécution, et améliorer l’utilisation et l’exploitation des ressources dans la base de données.
Les instructions SQL et PL/SQL sont regroupées en blocs, qui sont utilisés par le serveur et par certains outils Oracle. Ils sont reçus et exécutés par le moteur PL/SQL (PL/SQL Engine), qui peut se trouver soit dans l’outil, soit dans le serveur Oracle.
Le moteur accepte en entrée une unité valide ; il traite chaque instruction PL/SQL et sous-traite les instructions purement SQL au moteur SQL, afin de réduire le trafic réseau.
Lorsque le moteur PL/SQL reçoit un bloc pour exécution, il effectue les opérations suivantes :
-
séparation des ordres SQL et PL/SQL ;
-
passage des commandes SQL au processeur SQL (SQL statement executor) ;
-
passage des instructions procédurales au processeur d’instructions procédurales (procedural statement executor).
Ce mode de fonctionnement a pour effet de minimiser la charge du serveur Oracle et de réduire le nombre de curseurs nécessaires en mémoire.