SlideShare une entreprise Scribd logo
1  sur  45
Télécharger pour lire hors ligne
Abdelkhalek Benhoumine
 Première partie
Introduction au langage PL/SQL
Les variables
Traitements conditionnels
Traitements répétitifs
Les curseurs
Gestion d’exceptions
Procédures, Fonctions
Deuxième partie
Triggers
PLAN DU COURS
• Le cadre ( Framework ) est une description non-technique de comment le document
est structuré
• Les fondements (Foundation) contient l'essentiel de SQL3 incluant les types de
données abstraits et le modèle objet-relationnel
• L'interface d'appel client (SQL/CLI) permet le dialogue client/serveur,
• Le langage des procédures stockées (SQL/PSM ) permet la spécification des
procédures stockées,
• L'intégration aux langages classiques (SQL/Bindings) reprend l' «embedded »
SQL-2 et l'étend à SQL3
• La gestion des transactions (SQL/XA ) est une spécification de l'interface pour
moniteur transactionnel distribué.
• La gestion du temps (SQL/Temporal ) définit le support du temps et les intervalles...
• L'accès aux données externes (SQL/MED) permet l'utilisation de SQL pour accèder à
ds données non SQL,
• L'intégration aux langages objets (SQL/OBJ ) définit l'utilisation de SQL depuis un
langage objet
2. INTRODUCTION AU LANGAGE PL/SQL
2.1. Le bloc PL/SQL
2.1,1. Structure d'un bloc
2.1.2. Exemple
Comparaison avec SQL
 SQL :
 langage non procédural
 PL/SQL :
 langage procédural, qui intègre des ordres SQL
 SELECT, INSERT, UPDATE, DELETE
 INSERT, UPDATE, DELETE
 gestion des transactions : COMMIT, ROLLBACK, SAVEPOINT
 langage à part entière comprenant
 Définition de variables, constantes, expressions, affectations
 Traitements conditionnels, répétitifs
 Traitement des curseurs (et de collections)
 Traitement des erreurs et d’exceptions
 Modularité (sous-programmes)
2.2. Structure d'un bloc
• Le bloc
* interprète un ensemble de commandes
* est composé de 3 sections :
DECLARE
déclaration variables, constantes,
exceptions et curseurs
BEGIN [nom-bloc]
instructions SQL et extensions
EXCEPTION
Traitement des exceptions
END ; ou END nombloc;
3. Les variables
3.1. Types de variables utilisées
3.2. Déclaration des variable
3.3. Initialisation et visibilité
3.2. Variables de type simple
• Exemple :
Declare
nom char (15) ;
salaire number (7, 2) ;
embauche DATE ; DD-MON-YY
réponse boolean ; valeur : TRUE, FALSE, NULL
2.2.2. Exemple : CONTRÔLE de STOCK
Accept nom-prod Prompt ‘ nom du produit désiré’
Declare
qte-stock number (5) ;
Begin
Select quantité into qte-stock From Stock
Where produit= '&nom-prod' ;
If qte-stock > 0
Then Update stock Set quantité = quantité - 1
Where produit = '&nom-prod' ;
Insert into Ventes Values (&nom-prod ||'VENDU');
Else Insert into Ventes
Values (&nom-prod || 'demandé');
end if;
commit;
end;
3.3. Exemple
Declare
nom_emp char (15) ;
salaire emp.sal%TYPE ;
commission emp.comm%TYPE ;
nom_départ char (15) ;
Begin
Select ename, sal, comm, dname
Into nom_emp, salaire, commission, nom_départ
Fom emp, dept
Where ename = 'MILLER' and
emp.deptno=dept.deptno;
...
End;
4. Traitements conditionnels
• Définition :
• exécution d'instructions suivant le résultat d'une condition
• Syntaxe :
If condition1 Then traitement1 ;
elsif condition2 then traitement2 ;
else traitement3 ;
end if;
• Opérateurs utilisés dans les conditions :
• ce sont les mêmes que dans SQL
5. Traitements répétitifs
• Définition :
• possibilité d'effectuer des traitements répétitifs : clause
LOOP
• Quatre types de boucles :
• la boucle de base
• la boucle FOR
• la boucle WHILE
• la boucle CURSOR ... FOR
5.2. La boucle de base
• syntaxe :
LOOP [label]
instructions ;
END LOOP [label] ;
• sortie de boucle :
EXIT [label] [WHEN condition]
5.3. La boucle FOR
• Syntaxe :
For indice In [Reverse] exp1 ... exp2 Loop
instructions ;
End Loop ;
5.4. La boucle while
• exécution tant que condition vérifiée
• Syntaxe :
While condition Loop
instructions ;
End loop ;
• exemple : reste de 7324 div 9
Declare
reste number := 7324 ;
Begin
While reste >= 9 loop
reste := reste - 9 ;
end loop ;
insert into resultat values (reste, 'Reste de la division');
End ;
5.4. La boucle while
6. Les curseurs
en PL/SQL
6.1. Définition et types
6.2. Etapes d'utilisation d'un curseur implicite
6.3. Attributs d'un curseur
6.4. Simplification d'écriture
6.2. Utilisation d'un curseur
explicite
• Les étapes De Déclaration : 4 étapes
6.2. Déclaration d'un curseur explicite
6.2. Ouverture d'un curseur explicite
l'ouverture se fait dans la section Begin
• syntaxe : OPEN nom_curseur;
6.2. Traitement des lignes
• Le Fetch ramène une ligne à la fois.
6.2. Exemple
6.2. Fermeture d'un curseur explicite
• Syntaxe :
CLOSE nom_curseur ;
• action : libère la place mémoire
6.2. Exemple
Declare
cursor dept_10 is
select ename, sal from emp
where deptno = 10 order by sal ;
nom emp.ename%TYPE ;
salaire emp.sal%TYPE ;
Begin
Open dept_10 ;
Loop
Fetch dept_10 into nom, salaire ;
If salaire > 2500
then insert into résultat values (nom,salaire);
end if;
exit when salaire = 5 000 ;
end loop ;
close dept_10 ;
End ;
6.3. Les attributs d'un curseur
• Définition : indicateurs sur l'état d'un curseur.
• %FOUND : dernière ligne traitée
• %NOTFOUND : id
• %ISOPEN : ouverture d'un curseur
• %ROWCOUNT : nombre de lignes déjà traitées
6.3.1. Attribut %FOUND
(resp. %NOTFOUND)
6.3.3. Attribut %ISOPEN
6.3.4. Attribut %ROWCOUNT
6.4. Simplification d'écriture
• déclaration de variables :
Declare
cursor nom_curseur is ordre_select ;
nom_struct nom_curseur%Rowtype ;
• éléments de la structure identifiés par :
nom_struct.nom_colonne
• structure renseignée par le Fetch :
Fetch nom_curseur into nom_struct ;
6.5. Curseur paramétré
• Objectif : réutiliser un même curseur avec des valeurs
différentes dans un même bloc PL/SQL
• Syntaxe :
Declare
cursor nom_curseur (par1 type, par2 type, ...) is
ordre_select
Begin
Open nom_curseur (val1, val2, ...) ;
6.6.La clause CURRENT OF
• Objectif :
• Accéder directement en modification ou en suppression à la
ligne ramenée par Fetch
• il faut verouiller les lignes lors de la déclaration du curseur (
... For Update of nom_col ...)
6.6. Exemple 1
Declare
Cursor c1 is
select ename, sal from emp
for update of sal ;
Begin
For c1_rec in c1
Loop If c1_rec.sal > 1 500
Then Insert into resultat
values (c1_rec.ename, c1_rec.sal * 1.3);
Update emp set sal = sal * 1.3
Where Current of c1 ; end if,
end loop ;
end;
7. Gestion des
erreurs
7.1. Section EXCEPTION
7.2. Anomalie progr. utilisateur
7.3. Erreur Oracle
7.1. Section Exception
• Notion d'exception : traitement d'erreurs
• Types d'erreurs :
• erreurs internes Oracle (Sqlcode <> 0)
• erreurs programme utilisateur
• Règles à respecter :
• définir et donner un nom à chaque erreur
• associer ce nom à la section Exception (partie declare)
• définir le traitement dans la partie Exception
7.2. Anomalies du programme
 Syntaxe :
Declare
nom_erreur exception ;
...
Begin
...
If (anomalie) then raise nom_erreur ;
...
Exception When nom_erreur then (traitement) ;
 Sortie du bloc après exécution du traitement
7.4. Diagnostic d’erreurs
• SQLCODE : renvoie le code de l'erreur courante (valeur
numérique)
• SQLERRM [(code_erreur)] :
• renvoie le libellé de l'erreur courante.
Declare
nom char (10) ;
code number ;
lg number ;
mess char (50) ;
Begin
Select ename into nom from emp
Where empno = 9999 ;
Exception
When others then code := sqlcode ;
mess := sqlerrm ; lg := length (mess) ;
Insert into resultat values (code, lg, mess) ;
Commit ;
End ;
7.4. Exemple
_ NO_DATA_FOUND
– TOO_MANY_ROWS
– INVALID_CURSOR
– ZERO_DIVIDE
– DUP_VAL_ON_INDEX
DECLARE
e_insert_excep EXCEPTION;
PRAGMA EXCEPTION_INIT(e_insert_excep, -01400);
BEGIN
//
// Traitement
//
EXCEPTION
WHEN e_insert_excep THEN
DBMS_OUTPUT.PUT_LINE('INSERT OPERATION FAILED');
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
8. Sous-programmes
8.1. Déclaration
8.2. Les procédures
8.3. Les fonctions
8.4. Les packages
8.4. Exemple de package
package actions_emp is -- spécification
procedure offre_prime (id_emp number);
procedure embauche (id_emp number, nom char, ...);
procedure licencie (id_emp number);
END actions_emp;
package BODY actions_emp is
procedure offre_prime (id_emp number) IS ...
procedure embauche (id_emp number, nom char, ...) IS
Begin INSERT INTO emp (...)
End embauche;
procedure licencie (id_emp number) IS ...
END action_emp;
LE LANGAGE PL/SQL :
2° PARTIE
9. Déclencheurs
(Triggers)
9.1. Définition
9.2. Caractéristiques
9.3. Utilisations

Contenu connexe

Tendances

Rapport projet: relisation d'une app desktop
Rapport projet: relisation d'une app desktop Rapport projet: relisation d'une app desktop
Rapport projet: relisation d'une app desktop amat samiâ boualil
 
Connexion point à point (ppp, hdlc)
Connexion point à point (ppp, hdlc)Connexion point à point (ppp, hdlc)
Connexion point à point (ppp, hdlc)EL AMRI El Hassan
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications JavaAntoine Rey
 
Workshop Spring - Session 4 - Spring Batch
Workshop Spring -  Session 4 - Spring BatchWorkshop Spring -  Session 4 - Spring Batch
Workshop Spring - Session 4 - Spring BatchAntoine Rey
 
Conception et réalisation d'une application web et mobile de e-commerce
Conception et réalisation d'une application web et mobile de e-commerceConception et réalisation d'une application web et mobile de e-commerce
Conception et réalisation d'une application web et mobile de e-commerceAHMEDBELGHITH4
 
Formation PHP
Formation PHPFormation PHP
Formation PHPkemenaran
 
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLwebreaker
 
Mini projet individuel php
Mini projet individuel phpMini projet individuel php
Mini projet individuel phpKhadim Mbacké
 
Chapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeChapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeAmir Souissi
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les basesAntoine Rey
 
Cours développement côté serveur
Cours développement côté serveurCours développement côté serveur
Cours développement côté serveurHouda TOUKABRI
 
Conception et Réalisation d’une application de Gestion SCOLAIRE
Conception et Réalisation d’une application de Gestion SCOLAIREConception et Réalisation d’une application de Gestion SCOLAIRE
Conception et Réalisation d’une application de Gestion SCOLAIREGhizlane ALOZADE
 
Un exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPUn exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPKristen Le Liboux
 

Tendances (20)

Cours design pattern m youssfi partie 2 observer
Cours design pattern m youssfi partie 2 observerCours design pattern m youssfi partie 2 observer
Cours design pattern m youssfi partie 2 observer
 
Rapport projet: relisation d'une app desktop
Rapport projet: relisation d'une app desktop Rapport projet: relisation d'une app desktop
Rapport projet: relisation d'une app desktop
 
Connexion point à point (ppp, hdlc)
Connexion point à point (ppp, hdlc)Connexion point à point (ppp, hdlc)
Connexion point à point (ppp, hdlc)
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications Java
 
Workshop Spring - Session 4 - Spring Batch
Workshop Spring -  Session 4 - Spring BatchWorkshop Spring -  Session 4 - Spring Batch
Workshop Spring - Session 4 - Spring Batch
 
Support programmation orientée objet c# .net version f8
Support programmation orientée objet c#  .net version f8Support programmation orientée objet c#  .net version f8
Support programmation orientée objet c# .net version f8
 
Spring ioc
Spring iocSpring ioc
Spring ioc
 
Spring Boot RestApi.pptx
Spring Boot RestApi.pptxSpring Boot RestApi.pptx
Spring Boot RestApi.pptx
 
Conception et réalisation d'une application web et mobile de e-commerce
Conception et réalisation d'une application web et mobile de e-commerceConception et réalisation d'une application web et mobile de e-commerce
Conception et réalisation d'une application web et mobile de e-commerce
 
Formation PHP
Formation PHPFormation PHP
Formation PHP
 
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQL
 
Plsql
PlsqlPlsql
Plsql
 
Mini projet individuel php
Mini projet individuel phpMini projet individuel php
Mini projet individuel php
 
Chapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphismeChapitre 4 heritage et polymorphisme
Chapitre 4 heritage et polymorphisme
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les bases
 
Cours développement côté serveur
Cours développement côté serveurCours développement côté serveur
Cours développement côté serveur
 
Conception et Réalisation d’une application de Gestion SCOLAIRE
Conception et Réalisation d’une application de Gestion SCOLAIREConception et Réalisation d’une application de Gestion SCOLAIRE
Conception et Réalisation d’une application de Gestion SCOLAIRE
 
Un exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPUn exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHP
 
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka StreamsTraitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
 
HTML, CSS et Javascript
HTML, CSS et JavascriptHTML, CSS et Javascript
HTML, CSS et Javascript
 

Similaire à cours Plsql _ abdelkhalek benhoumine

1-pl-sql 2021 2022.pdf
1-pl-sql 2021 2022.pdf1-pl-sql 2021 2022.pdf
1-pl-sql 2021 2022.pdfImaneZoubir1
 
PL/Sql et Sécurité des bases de données
PL/Sql et Sécurité des bases de donnéesPL/Sql et Sécurité des bases de données
PL/Sql et Sécurité des bases de donnéessmiste
 
Plsql triggers
Plsql triggersPlsql triggers
Plsql triggersAz Za
 
PLSQL-Complements-4p.pdf
PLSQL-Complements-4p.pdfPLSQL-Complements-4p.pdf
PLSQL-Complements-4p.pdfRihabBENLAMINE
 
Plpython et Triggers
Plpython et TriggersPlpython et Triggers
Plpython et TriggersAffinitic
 
Design Pattern introduction
Design Pattern introductionDesign Pattern introduction
Design Pattern introductionneuros
 
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !Paris Salesforce Developer Group
 
Javascript ne se limite pas à jquery
Javascript ne se limite pas à jqueryJavascript ne se limite pas à jquery
Javascript ne se limite pas à jqueryneuros
 
Projet base de donnée
Projet base de donnée Projet base de donnée
Projet base de donnée MakremArfaoui2
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logiciellecyrilgandon
 

Similaire à cours Plsql _ abdelkhalek benhoumine (20)

1-pl-sql 2021 2022.pdf
1-pl-sql 2021 2022.pdf1-pl-sql 2021 2022.pdf
1-pl-sql 2021 2022.pdf
 
PL/Sql et Sécurité des bases de données
PL/Sql et Sécurité des bases de donnéesPL/Sql et Sécurité des bases de données
PL/Sql et Sécurité des bases de données
 
2_8_Cours_Plsql.ppt
2_8_Cours_Plsql.ppt2_8_Cours_Plsql.ppt
2_8_Cours_Plsql.ppt
 
C# 7 - Nouveautés
C# 7 - NouveautésC# 7 - Nouveautés
C# 7 - Nouveautés
 
Plsql triggers
Plsql triggersPlsql triggers
Plsql triggers
 
oracle : le PL-SQL
oracle : le PL-SQLoracle : le PL-SQL
oracle : le PL-SQL
 
PLSQL-Complements-4p.pdf
PLSQL-Complements-4p.pdfPLSQL-Complements-4p.pdf
PLSQL-Complements-4p.pdf
 
Les03.ppt
Les03.pptLes03.ppt
Les03.ppt
 
Plpython et Triggers
Plpython et TriggersPlpython et Triggers
Plpython et Triggers
 
Les04.ppt
Les04.pptLes04.ppt
Les04.ppt
 
Les08.ppt
Les08.pptLes08.ppt
Les08.ppt
 
Les06.ppt
Les06.pptLes06.ppt
Les06.ppt
 
Design Pattern introduction
Design Pattern introductionDesign Pattern introduction
Design Pattern introduction
 
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
 
Javascript ne se limite pas à jquery
Javascript ne se limite pas à jqueryJavascript ne se limite pas à jquery
Javascript ne se limite pas à jquery
 
Spring 3.0
Spring 3.0Spring 3.0
Spring 3.0
 
Projet base de donnée
Projet base de donnée Projet base de donnée
Projet base de donnée
 
Cours java script
Cours java scriptCours java script
Cours java script
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logicielle
 
De Java à .NET
De Java à .NETDe Java à .NET
De Java à .NET
 

Dernier

Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Alain Marois
 
Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeXL Groupe
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .Txaruka
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETMedBechir
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxMartin M Flynn
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSKennel
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...Faga1939
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Gilles Le Page
 
Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipM2i Formation
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSKennel
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSKennel
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptxTxaruka
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSKennel
 
presentation sur la maladie de la dengue .pptx
presentation sur la maladie de la dengue .pptxpresentation sur la maladie de la dengue .pptx
presentation sur la maladie de la dengue .pptxNYTombaye
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETMedBechir
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSKennel
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxrababouerdighi
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxAsmaa105193
 

Dernier (20)

Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024
 
Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directe
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptx
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024
 
Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadership
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptx
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
 
presentation sur la maladie de la dengue .pptx
presentation sur la maladie de la dengue .pptxpresentation sur la maladie de la dengue .pptx
presentation sur la maladie de la dengue .pptx
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSET
 
DO PALÁCIO À ASSEMBLEIA .
DO PALÁCIO À ASSEMBLEIA                 .DO PALÁCIO À ASSEMBLEIA                 .
DO PALÁCIO À ASSEMBLEIA .
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptx
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. Marocpptx
 
Pâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie PelletierPâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie Pelletier
 

cours Plsql _ abdelkhalek benhoumine

  • 2.
  • 3.  Première partie Introduction au langage PL/SQL Les variables Traitements conditionnels Traitements répétitifs Les curseurs Gestion d’exceptions Procédures, Fonctions Deuxième partie Triggers PLAN DU COURS
  • 4.
  • 5. • Le cadre ( Framework ) est une description non-technique de comment le document est structuré • Les fondements (Foundation) contient l'essentiel de SQL3 incluant les types de données abstraits et le modèle objet-relationnel • L'interface d'appel client (SQL/CLI) permet le dialogue client/serveur, • Le langage des procédures stockées (SQL/PSM ) permet la spécification des procédures stockées, • L'intégration aux langages classiques (SQL/Bindings) reprend l' «embedded » SQL-2 et l'étend à SQL3 • La gestion des transactions (SQL/XA ) est une spécification de l'interface pour moniteur transactionnel distribué. • La gestion du temps (SQL/Temporal ) définit le support du temps et les intervalles... • L'accès aux données externes (SQL/MED) permet l'utilisation de SQL pour accèder à ds données non SQL, • L'intégration aux langages objets (SQL/OBJ ) définit l'utilisation de SQL depuis un langage objet
  • 6. 2. INTRODUCTION AU LANGAGE PL/SQL 2.1. Le bloc PL/SQL 2.1,1. Structure d'un bloc 2.1.2. Exemple
  • 7. Comparaison avec SQL  SQL :  langage non procédural  PL/SQL :  langage procédural, qui intègre des ordres SQL  SELECT, INSERT, UPDATE, DELETE  INSERT, UPDATE, DELETE  gestion des transactions : COMMIT, ROLLBACK, SAVEPOINT  langage à part entière comprenant  Définition de variables, constantes, expressions, affectations  Traitements conditionnels, répétitifs  Traitement des curseurs (et de collections)  Traitement des erreurs et d’exceptions  Modularité (sous-programmes)
  • 8. 2.2. Structure d'un bloc • Le bloc * interprète un ensemble de commandes * est composé de 3 sections : DECLARE déclaration variables, constantes, exceptions et curseurs BEGIN [nom-bloc] instructions SQL et extensions EXCEPTION Traitement des exceptions END ; ou END nombloc;
  • 9. 3. Les variables 3.1. Types de variables utilisées 3.2. Déclaration des variable 3.3. Initialisation et visibilité
  • 10. 3.2. Variables de type simple • Exemple : Declare nom char (15) ; salaire number (7, 2) ; embauche DATE ; DD-MON-YY réponse boolean ; valeur : TRUE, FALSE, NULL
  • 11. 2.2.2. Exemple : CONTRÔLE de STOCK Accept nom-prod Prompt ‘ nom du produit désiré’ Declare qte-stock number (5) ; Begin Select quantité into qte-stock From Stock Where produit= '&nom-prod' ; If qte-stock > 0 Then Update stock Set quantité = quantité - 1 Where produit = '&nom-prod' ; Insert into Ventes Values (&nom-prod ||'VENDU'); Else Insert into Ventes Values (&nom-prod || 'demandé'); end if; commit; end;
  • 12. 3.3. Exemple Declare nom_emp char (15) ; salaire emp.sal%TYPE ; commission emp.comm%TYPE ; nom_départ char (15) ; Begin Select ename, sal, comm, dname Into nom_emp, salaire, commission, nom_départ Fom emp, dept Where ename = 'MILLER' and emp.deptno=dept.deptno; ... End;
  • 13. 4. Traitements conditionnels • Définition : • exécution d'instructions suivant le résultat d'une condition • Syntaxe : If condition1 Then traitement1 ; elsif condition2 then traitement2 ; else traitement3 ; end if; • Opérateurs utilisés dans les conditions : • ce sont les mêmes que dans SQL
  • 14. 5. Traitements répétitifs • Définition : • possibilité d'effectuer des traitements répétitifs : clause LOOP • Quatre types de boucles : • la boucle de base • la boucle FOR • la boucle WHILE • la boucle CURSOR ... FOR
  • 15. 5.2. La boucle de base • syntaxe : LOOP [label] instructions ; END LOOP [label] ; • sortie de boucle : EXIT [label] [WHEN condition]
  • 16. 5.3. La boucle FOR • Syntaxe : For indice In [Reverse] exp1 ... exp2 Loop instructions ; End Loop ;
  • 17. 5.4. La boucle while • exécution tant que condition vérifiée • Syntaxe : While condition Loop instructions ; End loop ;
  • 18. • exemple : reste de 7324 div 9 Declare reste number := 7324 ; Begin While reste >= 9 loop reste := reste - 9 ; end loop ; insert into resultat values (reste, 'Reste de la division'); End ; 5.4. La boucle while
  • 19. 6. Les curseurs en PL/SQL 6.1. Définition et types 6.2. Etapes d'utilisation d'un curseur implicite 6.3. Attributs d'un curseur 6.4. Simplification d'écriture
  • 20. 6.2. Utilisation d'un curseur explicite • Les étapes De Déclaration : 4 étapes
  • 21. 6.2. Déclaration d'un curseur explicite
  • 22. 6.2. Ouverture d'un curseur explicite l'ouverture se fait dans la section Begin • syntaxe : OPEN nom_curseur;
  • 23. 6.2. Traitement des lignes • Le Fetch ramène une ligne à la fois.
  • 25. 6.2. Fermeture d'un curseur explicite • Syntaxe : CLOSE nom_curseur ; • action : libère la place mémoire
  • 26. 6.2. Exemple Declare cursor dept_10 is select ename, sal from emp where deptno = 10 order by sal ; nom emp.ename%TYPE ; salaire emp.sal%TYPE ; Begin Open dept_10 ; Loop Fetch dept_10 into nom, salaire ; If salaire > 2500 then insert into résultat values (nom,salaire); end if; exit when salaire = 5 000 ; end loop ; close dept_10 ; End ;
  • 27. 6.3. Les attributs d'un curseur • Définition : indicateurs sur l'état d'un curseur. • %FOUND : dernière ligne traitée • %NOTFOUND : id • %ISOPEN : ouverture d'un curseur • %ROWCOUNT : nombre de lignes déjà traitées
  • 31. 6.4. Simplification d'écriture • déclaration de variables : Declare cursor nom_curseur is ordre_select ; nom_struct nom_curseur%Rowtype ; • éléments de la structure identifiés par : nom_struct.nom_colonne • structure renseignée par le Fetch : Fetch nom_curseur into nom_struct ;
  • 32. 6.5. Curseur paramétré • Objectif : réutiliser un même curseur avec des valeurs différentes dans un même bloc PL/SQL • Syntaxe : Declare cursor nom_curseur (par1 type, par2 type, ...) is ordre_select Begin Open nom_curseur (val1, val2, ...) ;
  • 33. 6.6.La clause CURRENT OF • Objectif : • Accéder directement en modification ou en suppression à la ligne ramenée par Fetch • il faut verouiller les lignes lors de la déclaration du curseur ( ... For Update of nom_col ...)
  • 34. 6.6. Exemple 1 Declare Cursor c1 is select ename, sal from emp for update of sal ; Begin For c1_rec in c1 Loop If c1_rec.sal > 1 500 Then Insert into resultat values (c1_rec.ename, c1_rec.sal * 1.3); Update emp set sal = sal * 1.3 Where Current of c1 ; end if, end loop ; end;
  • 35. 7. Gestion des erreurs 7.1. Section EXCEPTION 7.2. Anomalie progr. utilisateur 7.3. Erreur Oracle
  • 36. 7.1. Section Exception • Notion d'exception : traitement d'erreurs • Types d'erreurs : • erreurs internes Oracle (Sqlcode <> 0) • erreurs programme utilisateur • Règles à respecter : • définir et donner un nom à chaque erreur • associer ce nom à la section Exception (partie declare) • définir le traitement dans la partie Exception
  • 37. 7.2. Anomalies du programme  Syntaxe : Declare nom_erreur exception ; ... Begin ... If (anomalie) then raise nom_erreur ; ... Exception When nom_erreur then (traitement) ;  Sortie du bloc après exécution du traitement
  • 38. 7.4. Diagnostic d’erreurs • SQLCODE : renvoie le code de l'erreur courante (valeur numérique) • SQLERRM [(code_erreur)] : • renvoie le libellé de l'erreur courante.
  • 39. Declare nom char (10) ; code number ; lg number ; mess char (50) ; Begin Select ename into nom from emp Where empno = 9999 ; Exception When others then code := sqlcode ; mess := sqlerrm ; lg := length (mess) ; Insert into resultat values (code, lg, mess) ; Commit ; End ; 7.4. Exemple
  • 40. _ NO_DATA_FOUND – TOO_MANY_ROWS – INVALID_CURSOR – ZERO_DIVIDE – DUP_VAL_ON_INDEX
  • 41. DECLARE e_insert_excep EXCEPTION; PRAGMA EXCEPTION_INIT(e_insert_excep, -01400); BEGIN // // Traitement // EXCEPTION WHEN e_insert_excep THEN DBMS_OUTPUT.PUT_LINE('INSERT OPERATION FAILED'); DBMS_OUTPUT.PUT_LINE(SQLERRM); END;
  • 42. 8. Sous-programmes 8.1. Déclaration 8.2. Les procédures 8.3. Les fonctions 8.4. Les packages
  • 43. 8.4. Exemple de package package actions_emp is -- spécification procedure offre_prime (id_emp number); procedure embauche (id_emp number, nom char, ...); procedure licencie (id_emp number); END actions_emp; package BODY actions_emp is procedure offre_prime (id_emp number) IS ... procedure embauche (id_emp number, nom char, ...) IS Begin INSERT INTO emp (...) End embauche; procedure licencie (id_emp number) IS ... END action_emp;
  • 44. LE LANGAGE PL/SQL : 2° PARTIE
  • 45. 9. Déclencheurs (Triggers) 9.1. Définition 9.2. Caractéristiques 9.3. Utilisations