Beruflich Dokumente
Kultur Dokumente
Support de TP
PL-SQL-Support-TP
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
PL-SQL-Support-TP
PL-SQL-Support-TP
PL-SQL-Support-TP
PL-SQL-Support-TP
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);
Laffichage ne sera visualis que lorsque lordre SQL suivant est excut dans lenvironnement SQL+: SQL> SET SERVEROUTPUT ON;
PL-SQL-Support-TP
PL-SQL-Support-TP
1. Prsentation
-Dans le cas ou lordre SELECT renvoie plusieurs lignes, on est amen dfinir des curseurs.
-Exemple: crire un bloc PL-SQL permettant dafficher les noms des pilotes dont les salaires sont > 1200DT. Select nom Cette solution nest plus valable parce quon peut pas affecter Into v_nom plusieurs Vals une seule variable. Where sal>1200;
-Lutilisation dun curseur pour traiter un ordre SELECT renvoyant plusieurs lignes ncessite les 4 tapes suivantes :
1. 2. 3. 4. 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
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
nom_procdure[(liste
des
PL-SQL-Support-TP
RETURN type_retour dfinit le type de la valeur retourne par la fonction. Bloc est le corps de la fonction. Il doit contenir une instruction RETURN(variable_rsultat).
PL-SQL-Support-TP
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
PL-SQL-Support-TP
Il est noter que dans le corps du package, lordre de dclaration doit tre tel que les lments rfrencs par un autre lment doivent tre dclars avant lui.
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
Dans le cas de loption UPDATING, il est possible de prciser le nom de la colonne sur laquelle porte la modification par la syntaxe: IF UPDATING (nom_colonne) THEN traitements END IF;
PL-SQL-Support-TP
PL-SQL-Support-TP
PL-SQL-Support-TP
VALUES
PL-SQL-Support-TP