Upload
marine-poulet
View
109
Download
3
Embed Size (px)
Citation preview
Les Systèmes de Gestion de Bases de Données (SGBD)
PL-SQL
2006-2007
B.Sadeg Le Havre
Bibliographie S. Abiteboul, R. Hull, V. Vianu, Foundations of Databases, Addison-
Wesley J.C. Date, A Guide to the SQL Standard, Addison-Wesley
J.C. Date, A Guide to DB2, Addison-Wesley R. Elmasri, S. Navathe, Conception et architecture des bases de
données, 4ème ed., publié par Pearson Education. H. Garcia-Molina, J. Ullman and J. Widom, Implementation of
Database Systems, Prentice Hall, 1999. G. GARDARIN, Bases de Données, Eyrolles, 6ème tirage, 2005. R. Ramakrishnan et J. Gehrke DATABASE MANAGEMENT
SYSTEMS, MacGraw Hill M. SCHOLL, B. AMANN, P. RIGAUX, V. CHRISTOPHIDES, D.
VODISLAV, Polycopié de Bases de Données, librairie des Arts et Métiers.
Ullman J.D. and Widom J. A First Course in Database Systems, Prentice Hall, 1997
Ullman J.D. Principles of Database and Knowledge-Base Systems, 2 volumes, Computer Science Press
2006-2007
B.Sadeg Le Havre
Sommaire
Rappels BD et SGBD relationnels Postgresql, pl/pgsql Algèbre relationnelle Dépendances fonctionnelles et normalisation Architecture d'un SGBD Optimisation d’une BD Notions sur l'interfaçage avec les langages évolués Les différents types de SGBD
Le langage PL/SQL
2006-2007
B.Sadeg Le Havre
On le trouve dans le processeur SQL d ’Oracle (SQLPLUS) Compromis entre un langage complètement procédural et un SQL
de très haut niveau, mais avec un nombre limité d ’instructions. Permets d ’utiliser des variables locales, des boucles, des
procédures, le traitement des relations ligne par ligne. Forme général :
DECLARE
déclarations
BEGIN
instructions exécutables
END;
.
Run; - - pour exécuter le bloc
La section DECLARE est optionnelle le point ou ‘run’ (ou ‘/’) sont nécessaire pour terminer l ’instruction
et l ’exécuter.
2006-2007
B.Sadeg Le Havre
Exemple simple séquence de modifications :
Soit la relation AIME (buveur, biere) => manipulation de AIME :
Begin
insert into AIME values (‘ Sally ’, ‘ Bud ’);
Delete from AIME Where buveur = ‘ Fred ’ and biere = ‘Miller’;
end;
.
Run; Procédures : des objets stockés dans la BD qui utilisent des
instructions PL/SQL. ==>Forme générale :
CREATE OR REPLACE PROCEDURE <nom> ( <list-arg> )
AS
<declarations>
BEGIN
<<instructions PL/SQL>
END; La liste d ’arguments contient les noms des arguments avec leur
type et le mode, qui peut être IN, OUT, IN OUT
2006-2007
B.Sadeg Le Havre
Puisque les types dans la procédure doivent correspondre aux types de colonnes dans la BD, on utilise souvent pour déclarer les types d ’arguments et d ’autres variables des expressions comme :
variable relation.attribut%TYPE;
Exemple : une procédure qui prend une bière et un prix et l ’ajoute à ‘Joe’ . Soit la relation : VENDRE (bar, biere, prix)
Create or replace procedure joemenu (b IN vendre.biere%TYPE;
p IN vendre.prix%TYPE)
AS
Begin
Insert into vendre values(‘Bar de Joe’, b, p);
End;
.
Run; Rmq : le ‘ run ’ ici ne fait que stocker la procédure. Il ne l ’exécute
pas.
2006-2007
B.Sadeg Le Havre
L ’appel d ’une procédure apparaît dans le corps d ’une instruction PL/SQL.
Exemple :
Begin
Joemenu(‘ Bud ’, 2.50);
Joemenu(‘ Moosdrool ’, 5.00);
End;
.
Run;
Assignation : variable := expression;
Branchements :
– IF <cond> THEN
<instructions>
ELSE
<instructions>
END IF
Appeler une procédure
2006-2007
B.Sadeg Le Havre
Rmq : Si branchements imbriquées : utiliser ELSEIF (au lieu de ELSE IF)
Boucles :LOOP
…..
EXIT WHEN <condition>
…..
ENDLOOP;