Académique Documents
Professionnel Documents
Culture Documents
11 PLSQL
11 PLSQL
Support de TP
PL-SQL-Support-TP
I. Le langage PL/SQL
Introduction
PL-SQL-Support-TP
1.1 Prsentation
-Le langage PL/SQL (Procedural language/SQL) est une extension du langage SQL
qui offre un environnement procdural au langage SQL.
-Dans lenvironnement PL/SQL, les ordres SQL et PL/SQL sont regroups en blocs. Un
bloc ne demande quun seul transfert vers le moteur PL/SQL qui interprte en une seule
fois lensemble des commandes contenues dans le bloc.
PL-SQL-Support-TP
PL-SQL-Support-TP
PL-SQL-Support-TP
BOOLEAN
BINARY_INTEGER
DECIMAL
FLOAT
INTEGER
REAL.
PL-SQL-Support-TP
PL-SQL-Support-TP
PL-SQL-Support-TP
PL-SQL-Support-TP
PL-SQL-Support-TP
Exemple :
TYPE t_nom IS TABLE OF CHAR(35) INDEX BY
BINARY_INTEGER ;
Table_nom t_nom ;
PL-SQL-Support-TP
PL-SQL-Support-TP
*Record : nom_variable.nom_champ
Exemple: employe.nom_pilote:=tarkani;
employe.revenu_pilote :=3000 ;
*Table : nom_variable(valeur cl primaire)
Exemple : Table_nom(3) :=tarkani ;
PL-SQL-Support-TP
PL-SQL-Support-TP
4. Instructions de contrle
Comme tout langage de programmation, le
PL/SQL offre des structures de contrle:
Alternatives
Rptitives.
PL-SQL-Support-TP
PL-SQL-Support-TP
PL-SQL-Support-TP
Remarques
Pour afficher un commentaire:
DBMS_OUTPUT.PUT_LINE(texte_mess);
PL-SQL-Support-TP
1. Prsentation
-Dans le cas ou lordre SELECT renvoie plusieurs lignes, on est amen
dfinir des curseurs.
Dclaration du curseur
Ouverture du curseur
Traitement des lignes
PL-SQL-Support-TP
Fermeture
Syntaxe :
CURSOR nom_curseur IS requte ;
Exemple :
CURSOR C1 IS SELECT nom FROM pilote WHERE sal<1230 ;
PL-SQL-Support-TP
Exemple :
DECLARE
CURSOR C2(psal NUMBER(8,2), pcom NUMBER(8,2))
IS SELECT nom
FROM pilote
WHERE sal<psal AND comm> pcomm ;
PL-SQL-Support-TP
Exemple:
CLOSE C1;
Ou bien
FETCH nom_curseur INTO nom_enregistrement;
PL-SQL-Support-TP
5.Exemple:
crire un bloc PLSQL permettant dafficher les noms et les salaires
de tous les pilotes, dont les salaire dpassent 22000.
Methode1: Utilisation dun type scalaire
DECLARE
CURSOR C3 IS SELECT nom, sal FROM pilote where sal>22000;
V_nom pilote.nom%type;
V_sal pilote.sal%type;
BEGIN
OPEN C3;
LOOP
FETCH C3 INTO v_nom, v_sal;
EXIT WHEN C3%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('Nom: ' || v_nom ||' Salaire: ' || v_sal);
END LOOP;
CLOSE C3;
END;
PL-SQL-Support-TP
5.Exemple:
Methode2: Utilisation dun type compos enregistrement
DECLARE
TYPE t_pil IS RECORD
(v_nom pilote.nom%type,
v_sal pilote.sal%type);
r_pil t_pil;
CURSOR C3 IS SELECT nom,sal FROM pilote where sal>22000;
BEGIN
OPEN C3;
LOOP
FETCH C3 INTO r_pil;
EXIT WHEN C3%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('Nom: ' || r_pil.v_nom ||' Salaire: ' ||
r_pil.v_sal);
END LOOP;
CLOSE C3;
PL-SQL-Support-TP
END;
5.Exemple
Methode3: Utilisation dun type compos faisant rf une structure dune table
DECLARE
CURSOR C3 IS SELECT nom, sal FROM pilote where
sal>22000;
r_pil C3%ROWTYPE;
BEGIN
OPEN C3;
LOOP
FETCH C3 INTO r_pil;
EXIT WHEN C3%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('Nom: ' || r_pil.nom ||' Salaire:
' || r_pil.sal);
END LOOP;
CLOSE C3;
PL-SQL-Support-TP
END;
PL-SQL-Support-TP
PL-SQL-Support-TP
PL-SQL-Support-TP
1. Prsentation
Une exception est une erreur qui survient durant une excution.
2 types dexceptions:
Prdfinies par ORACLE
Dfinie par le programmeur
Syntaxe:
PL-SQL-Support-TP
PL-SQL-Support-TP
PL-SQL-Support-TP
Exemple:
PL-SQL-Support-TP
PL-SQL-Support-TP
1. Prsentation
Lutilisation des procdures ou de fonctions
stockes permet denregistrer et dexcuter des
traitements frquemment utiliss au niveau du
noyau du SGBDR plutt que dans chaque
application.
Un seul exemplaire du traitement est donc dfini
et stock dans la base et il est excutable, en mode
partag, par toutes les applications qui y font
rfrence.
PL-SQL-Support-TP
ou en entr
sortie (IN OUT).
-Le mode par dfaut est IN.
-Le Bloc est le corps de la procdure.
PL-SQL-Support-TP
SQL>
EXECUTE
paramtres effectifs)] ;
nom_procdure[(liste
Exemple:
SQL> EXECUTE nv_pilote(1331, Tunis) ;
PL-SQL-Support-TP
des
PL-SQL-Support-TP
Compilation
Pour compiler la fonction ou la procdure stocke, il suffit
dexcuter le fichier contenant ces dernires. En cas de dtection
dune erreur de syntaxe pendant la phase de compilation, le
message derreur suivant est affich :
Procedure created with compilation errors
Pour connatre le diagnostic des erreurs, il suffit dutiliser les vues
suivantes du dictionnaire de donnes:
-USER_ERRORS
-ALL_ERRORS
-DBA_ERRORS.
PL-SQL-Support-TP
Compilation
Des informations gnrales sur la procdure ou sur la
fonction sont stockes dans les vues suivantes du
dictionnaire de donnes :
USER_OBJECTS
ALL_ OBJECTS
DBA_ OBJECTS.
Le texte source des procdures et des fonctions stockes se
trouve dans les vues suivantes du dictionnaire de donnes :
USER_SOURCE
ALL_ SOURCE
DBA_ SOURCE.
PL-SQL-Support-TP
PL-SQL-Support-TP
PL-SQL-Support-TP
V. Le langage PL/SQL
Package
PL-SQL-Support-TP
PL-SQL-Support-TP
Cration de la partie
spcification
la cration et la compilation seffectuent par la
commande suivante :
PL-SQL-Support-TP
Exemple-Partie Spcification
CREATE OR REPLACE PACKAGE package_Srie3 AS
PROCEDURE supprimer_pilote(v_pilote pilote.nopilot%type);
PROCEDURE comm_pilote(v_pilot pilote.nopilot%type,
txcomm float);
FUNCTION max_h_v_type (v_type appareil.codetype%type)
RETURN NUMBER;
FUNCTION pilote_avion_pilot (v_nopilot pilote.nopilot%type)
RETURN NUMBER;
END package_Srie3;
/
PL-SQL-Support-TP
Exemple:Partie Body
CREATE OR REPLACE PACKAGE BODY pilote_work AS
PROCEDURE nv_pilote
(x_nopilot IN pilote.nopilot%type, x_adresse IN pilote.adresse%type)IS
Begin
INSERT INTO pilote(nopilot, adresse)
VALUES(x_nopilot, x_adresse);
COMMIT WORK;
END nv_pilote;
FUNCTION moy_h_vol(x_codetype IN appareil.codetype%type) RETURN NUMBER IS
Nbhvol_avg NUMBER(8,2):=0;
BEGIN
SELECT AVG(nbhvol)
INTO Nbhvol_avg
FROM avion
WHERE type = x_codetype;
RETURN(Nbhvol_avg);
END moy_h_vol;
PL-SQL-Support-TP
END pilote_work;
PL-SQL-Support-TP
Prsentation
On appelle dclencheur ou trigger: un traitement dclench par un
vnement.
Les triggers peuvent tre applicatifs ou de base de donnes.
Nous ne nous intresserons quaux dclencheurs de BD puisquils
permettent dimplmenter des rgles de gestion complexes et
compltent les rgles dintgrit rfrentielle associes la
dclaration des tables.
Par exemple, un dclencheur peut tre dfini pour vrifier, lors de
chaque affectation dun avion un vol, que lavion nest pas dj
requis pour une autre affectation pendant la dure de vol.
PL-SQL-Support-TP
Prsentation
Les triggers de BD sont associs une et une seule table, il
est oprationnel jusqu la suppression de la table laquelle il
est li.
Le traitement associ au trigger peut tre excut:
Soit une fois: suite lvnement qui la dclench
(trigger par ordre)
Soit pour chaque ligne de la table concerne par
lvnement (trigger ligne).
Mais comment peut-on dclencher un trigger BD ?
Lvnement dclencheur est une action de mise jour sur
la table
(INSERT, DELETE, UPDATE).
PL-SQL-Support-TP
PL-SQL-Support-TP
PL-SQL-Support-TP
VALUES
PL-SQL-Support-TP
Trigger ligne
Suite
Un trigger ligne avec loption BEFORE peut servir
effectuer des traitements dinitialisation avant excution
des modifications sur la table.
Un trigger ligne avec loption AFTER permet de propager
les modifications ou de grer des historiques. Il est souvent
utilis avec rfrence aux anciennes valeurs et/ou aux
nouvelles valeurs des colonnes.
Des informations gnrales sur les triggers sont stockes
dans les vues suivantes du dictionnaire de donnes :
USER_TRIGGERS
ALL_ TRIGGERS
DBA_ TRIGGERS.
PL-SQL-Support-TP