SlideShare une entreprise Scribd logo
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

Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQL
webreaker
 
Cours08 exceptions
Cours08 exceptionsCours08 exceptions
Cours08 exceptionsIssam Talkam
 
Chapitre 6 traitement des exceptions
Chapitre 6  traitement des exceptionsChapitre 6  traitement des exceptions
Chapitre 6 traitement des exceptions
Amir Souissi
 
Correction Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfCorrection Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdf
slimyaich3
 
Le langage plsql
Le langage plsqlLe langage plsql
Le langage plsql
kati_f87
 
Mise en Forme des Résultats avec SQL*Plus
Mise en Forme des Résultats avec SQL*PlusMise en Forme des Résultats avec SQL*Plus
Mise en Forme des Résultats avec SQL*Plus
webreaker
 
Les Contraintes | SQL Oracle
Les Contraintes | SQL OracleLes Contraintes | SQL Oracle
Les Contraintes | SQL Oracle
webreaker
 
POO Java Chapitre 2 Encapsulation
POO Java Chapitre 2 EncapsulationPOO Java Chapitre 2 Encapsulation
POO Java Chapitre 2 Encapsulation
Mouna Torjmen
 
Exercice 1 java Héritage
Exercice 1 java HéritageExercice 1 java Héritage
Exercice 1 java Héritage
NadaBenLatifa
 
Telecharger Exercices corrigés sqlplus
Telecharger Exercices corrigés sqlplusTelecharger Exercices corrigés sqlplus
Telecharger Exercices corrigés sqlplus
webreaker
 
T1 corrections-qcm
T1 corrections-qcmT1 corrections-qcm
T1 corrections-qcminfcom
 
Cours php & Mysql - 2éme partie
Cours php & Mysql - 2éme partieCours php & Mysql - 2éme partie
Cours php & Mysql - 2éme partie
kadzaki
 
Chp4 - Diagramme de Séquence
Chp4 - Diagramme de SéquenceChp4 - Diagramme de Séquence
Chp4 - Diagramme de Séquence
Lilia Sfaxi
 
Dba oracle-v1
Dba oracle-v1Dba oracle-v1
Dba oracle-v1infcom
 
POO-JAVA-partie-1.pdf
POO-JAVA-partie-1.pdfPOO-JAVA-partie-1.pdf
POO-JAVA-partie-1.pdf
YasushiTsubakik
 
Chapitre 5 classes abstraites et interfaces
Chapitre 5  classes abstraites et interfacesChapitre 5  classes abstraites et interfaces
Chapitre 5 classes abstraites et interfaces
Amir Souissi
 
Corrige tp java
Corrige tp javaCorrige tp java
Corrige tp java
Maya Medjdoub
 
POO Java Chapitre 1 Classe & Objet
POO Java Chapitre 1 Classe & ObjetPOO Java Chapitre 1 Classe & Objet
POO Java Chapitre 1 Classe & Objet
Mouna Torjmen
 
Introduction à Symfony
Introduction à SymfonyIntroduction à Symfony
Introduction à Symfony
Abdoulaye Dieng
 

Tendances (20)

Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQL
 
Cours08 exceptions
Cours08 exceptionsCours08 exceptions
Cours08 exceptions
 
Chapitre 6 traitement des exceptions
Chapitre 6  traitement des exceptionsChapitre 6  traitement des exceptions
Chapitre 6 traitement des exceptions
 
Correction Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfCorrection Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdf
 
Cours java
Cours javaCours java
Cours java
 
Le langage plsql
Le langage plsqlLe langage plsql
Le langage plsql
 
Mise en Forme des Résultats avec SQL*Plus
Mise en Forme des Résultats avec SQL*PlusMise en Forme des Résultats avec SQL*Plus
Mise en Forme des Résultats avec SQL*Plus
 
Les Contraintes | SQL Oracle
Les Contraintes | SQL OracleLes Contraintes | SQL Oracle
Les Contraintes | SQL Oracle
 
POO Java Chapitre 2 Encapsulation
POO Java Chapitre 2 EncapsulationPOO Java Chapitre 2 Encapsulation
POO Java Chapitre 2 Encapsulation
 
Exercice 1 java Héritage
Exercice 1 java HéritageExercice 1 java Héritage
Exercice 1 java Héritage
 
Telecharger Exercices corrigés sqlplus
Telecharger Exercices corrigés sqlplusTelecharger Exercices corrigés sqlplus
Telecharger Exercices corrigés sqlplus
 
T1 corrections-qcm
T1 corrections-qcmT1 corrections-qcm
T1 corrections-qcm
 
Cours php & Mysql - 2éme partie
Cours php & Mysql - 2éme partieCours php & Mysql - 2éme partie
Cours php & Mysql - 2éme partie
 
Chp4 - Diagramme de Séquence
Chp4 - Diagramme de SéquenceChp4 - Diagramme de Séquence
Chp4 - Diagramme de Séquence
 
Dba oracle-v1
Dba oracle-v1Dba oracle-v1
Dba oracle-v1
 
POO-JAVA-partie-1.pdf
POO-JAVA-partie-1.pdfPOO-JAVA-partie-1.pdf
POO-JAVA-partie-1.pdf
 
Chapitre 5 classes abstraites et interfaces
Chapitre 5  classes abstraites et interfacesChapitre 5  classes abstraites et interfaces
Chapitre 5 classes abstraites et interfaces
 
Corrige tp java
Corrige tp javaCorrige tp java
Corrige tp java
 
POO Java Chapitre 1 Classe & Objet
POO Java Chapitre 1 Classe & ObjetPOO Java Chapitre 1 Classe & Objet
POO Java Chapitre 1 Classe & Objet
 
Introduction à Symfony
Introduction à SymfonyIntroduction à Symfony
Introduction à Symfony
 

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.pdf
ImaneZoubir1
 
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
smiste
 
2_8_Cours_Plsql.ppt
2_8_Cours_Plsql.ppt2_8_Cours_Plsql.ppt
2_8_Cours_Plsql.ppt
RihabBENLAMINE
 
C# 7 - Nouveautés
C# 7 - NouveautésC# 7 - Nouveautés
C# 7 - Nouveautés
James RAVAILLE
 
Plsql triggers
Plsql triggersPlsql triggers
Plsql triggers
Az Za
 
oracle : le PL-SQL
oracle : le PL-SQLoracle : le PL-SQL
oracle : le PL-SQL
Mohammed Jaafar
 
PLSQL-Complements-4p.pdf
PLSQL-Complements-4p.pdfPLSQL-Complements-4p.pdf
PLSQL-Complements-4p.pdf
RihabBENLAMINE
 
Les03.ppt
Les03.pptLes03.ppt
Les03.ppt
zidane39
 
Plpython et Triggers
Plpython et TriggersPlpython et Triggers
Plpython et TriggersAffinitic
 
Les04.ppt
Les04.pptLes04.ppt
Les04.ppt
zidane39
 
Les08.ppt
Les08.pptLes08.ppt
Les08.ppt
zidane39
 
Les06.ppt
Les06.pptLes06.ppt
Les06.ppt
zidane39
 
Design Pattern introduction
Design Pattern introductionDesign Pattern introduction
Design Pattern introduction
neuros
 
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 à jquery
neuros
 
Spring 3.0
Spring 3.0Spring 3.0
Projet base de donnée
Projet base de donnée Projet base de donnée
Projet base de donnée
MakremArfaoui2
 
Cours java script
Cours java scriptCours java script
Cours java script
AdelThaljaoui
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logiciellecyrilgandon
 
De Java à .NET
De Java à .NETDe Java à .NET
De Java à .NET
Michel Salib
 

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

Projet de fin d'étude licence en sciece.pptx
Projet de fin d'étude licence en sciece.pptxProjet de fin d'étude licence en sciece.pptx
Projet de fin d'étude licence en sciece.pptx
elfangourabdelouahab
 
Exame DELF - A2 Francês pout tout public
Exame DELF - A2  Francês pout tout publicExame DELF - A2  Francês pout tout public
Exame DELF - A2 Francês pout tout public
GiselaAlves15
 
Iris et les hommes.pptx
Iris      et         les      hommes.pptxIris      et         les      hommes.pptx
Iris et les hommes.pptx
Txaruka
 
M2i Webinar - « Participation Financière Obligatoire » et CPF : une opportuni...
M2i Webinar - « Participation Financière Obligatoire » et CPF : une opportuni...M2i Webinar - « Participation Financière Obligatoire » et CPF : une opportuni...
M2i Webinar - « Participation Financière Obligatoire » et CPF : une opportuni...
M2i Formation
 
Newsletter SPW Agriculture en province du Luxembourg du 03-06-24
Newsletter SPW Agriculture en province du Luxembourg du 03-06-24Newsletter SPW Agriculture en province du Luxembourg du 03-06-24
Newsletter SPW Agriculture en province du Luxembourg du 03-06-24
BenotGeorges3
 
Conseils pour Les Jeunes | Conseils de La Vie| Conseil de La Jeunesse
Conseils pour Les Jeunes | Conseils de La Vie| Conseil de La JeunesseConseils pour Les Jeunes | Conseils de La Vie| Conseil de La Jeunesse
Conseils pour Les Jeunes | Conseils de La Vie| Conseil de La Jeunesse
Oscar Smith
 
Calendrier du 3 juin 2024 et compte rendu.pdf
Calendrier du 3 juin 2024 et compte rendu.pdfCalendrier du 3 juin 2024 et compte rendu.pdf
Calendrier du 3 juin 2024 et compte rendu.pdf
frizzole
 
Contrôle fiscale en république de guinée
Contrôle fiscale en république de guinéeContrôle fiscale en république de guinée
Contrôle fiscale en république de guinée
bangalykaba146
 
SYLLABUS DU COURS MARKETING DTS 1-2.pdf
SYLLABUS DU COURS  MARKETING DTS 1-2.pdfSYLLABUS DU COURS  MARKETING DTS 1-2.pdf
SYLLABUS DU COURS MARKETING DTS 1-2.pdf
Moukagni Evrard
 
Evaluación docentes "Un cielo, dos países: El camino de los descubrimientos"
Evaluación docentes "Un cielo, dos países: El camino de los descubrimientos"Evaluación docentes "Un cielo, dos países: El camino de los descubrimientos"
Evaluación docentes "Un cielo, dos países: El camino de los descubrimientos"
IES Turina/Rodrigo/Itaca/Palomeras
 
Cours SE - Gestion de la mémoire- Cours IG IPSET.pdf
Cours SE - Gestion de la mémoire- Cours IG IPSET.pdfCours SE - Gestion de la mémoire- Cours IG IPSET.pdf
Cours SE - Gestion de la mémoire- Cours IG IPSET.pdf
MedBechir
 
Mémoire de licence en finance comptabilité et audit
Mémoire de licence en finance comptabilité et auditMémoire de licence en finance comptabilité et audit
Mémoire de licence en finance comptabilité et audit
MelDjobo
 
4 expositions à voir à Paris.pptx
4   expositions    à   voir   à Paris.pptx4   expositions    à   voir   à Paris.pptx
4 expositions à voir à Paris.pptx
Txaruka
 

Dernier (13)

Projet de fin d'étude licence en sciece.pptx
Projet de fin d'étude licence en sciece.pptxProjet de fin d'étude licence en sciece.pptx
Projet de fin d'étude licence en sciece.pptx
 
Exame DELF - A2 Francês pout tout public
Exame DELF - A2  Francês pout tout publicExame DELF - A2  Francês pout tout public
Exame DELF - A2 Francês pout tout public
 
Iris et les hommes.pptx
Iris      et         les      hommes.pptxIris      et         les      hommes.pptx
Iris et les hommes.pptx
 
M2i Webinar - « Participation Financière Obligatoire » et CPF : une opportuni...
M2i Webinar - « Participation Financière Obligatoire » et CPF : une opportuni...M2i Webinar - « Participation Financière Obligatoire » et CPF : une opportuni...
M2i Webinar - « Participation Financière Obligatoire » et CPF : une opportuni...
 
Newsletter SPW Agriculture en province du Luxembourg du 03-06-24
Newsletter SPW Agriculture en province du Luxembourg du 03-06-24Newsletter SPW Agriculture en province du Luxembourg du 03-06-24
Newsletter SPW Agriculture en province du Luxembourg du 03-06-24
 
Conseils pour Les Jeunes | Conseils de La Vie| Conseil de La Jeunesse
Conseils pour Les Jeunes | Conseils de La Vie| Conseil de La JeunesseConseils pour Les Jeunes | Conseils de La Vie| Conseil de La Jeunesse
Conseils pour Les Jeunes | Conseils de La Vie| Conseil de La Jeunesse
 
Calendrier du 3 juin 2024 et compte rendu.pdf
Calendrier du 3 juin 2024 et compte rendu.pdfCalendrier du 3 juin 2024 et compte rendu.pdf
Calendrier du 3 juin 2024 et compte rendu.pdf
 
Contrôle fiscale en république de guinée
Contrôle fiscale en république de guinéeContrôle fiscale en république de guinée
Contrôle fiscale en république de guinée
 
SYLLABUS DU COURS MARKETING DTS 1-2.pdf
SYLLABUS DU COURS  MARKETING DTS 1-2.pdfSYLLABUS DU COURS  MARKETING DTS 1-2.pdf
SYLLABUS DU COURS MARKETING DTS 1-2.pdf
 
Evaluación docentes "Un cielo, dos países: El camino de los descubrimientos"
Evaluación docentes "Un cielo, dos países: El camino de los descubrimientos"Evaluación docentes "Un cielo, dos países: El camino de los descubrimientos"
Evaluación docentes "Un cielo, dos países: El camino de los descubrimientos"
 
Cours SE - Gestion de la mémoire- Cours IG IPSET.pdf
Cours SE - Gestion de la mémoire- Cours IG IPSET.pdfCours SE - Gestion de la mémoire- Cours IG IPSET.pdf
Cours SE - Gestion de la mémoire- Cours IG IPSET.pdf
 
Mémoire de licence en finance comptabilité et audit
Mémoire de licence en finance comptabilité et auditMémoire de licence en finance comptabilité et audit
Mémoire de licence en finance comptabilité et audit
 
4 expositions à voir à Paris.pptx
4   expositions    à   voir   à Paris.pptx4   expositions    à   voir   à Paris.pptx
4 expositions à voir à Paris.pptx
 

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