[go: up one dir, main page]

0% ont trouvé ce document utile (0 vote)
33 vues104 pages

PL SQL Rapport

Ce rapport présente une introduction complète au langage PL/SQL, une extension de SQL permettant des capacités procédurales dans les bases de données Oracle. Il couvre des concepts fondamentaux tels que la déclaration de variables, la manipulation des données, les structures de contrôle, ainsi que des notions avancées comme les procédures stockées et les déclencheurs. L'apprentissage de PL/SQL est mis en avant comme une expérience enrichissante, soutenue par un encadrement de qualité.

Transféré par

amranemohammedamine240
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
33 vues104 pages

PL SQL Rapport

Ce rapport présente une introduction complète au langage PL/SQL, une extension de SQL permettant des capacités procédurales dans les bases de données Oracle. Il couvre des concepts fondamentaux tels que la déclaration de variables, la manipulation des données, les structures de contrôle, ainsi que des notions avancées comme les procédures stockées et les déclencheurs. L'apprentissage de PL/SQL est mis en avant comme une expérience enrichissante, soutenue par un encadrement de qualité.

Transféré par

amranemohammedamine240
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 104

Rapport

PL/SQL

AMRANE
S2ID
MOHAMMED-AMINE
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

Remerciment
Je souhaite vous adresser mes plus sincères
remerciements pour Mr. Korikache, vous nous
prodiguez avec tant de patience et de
bienveillance. Votre capacité à expliquer les
concepts complexes du PL/SQL de manière
simple et accessible est une véritable
bénédiction pour nous. Non seulement vous
nous aidez à mieux comprendre la matière, mais
vous parvenez également à rendre notre
parcours plus léger et plus agréable.
Grâce à votre soutien constant, vous nous
permettez de dormir paisiblement et
sereinement, sans être accablés par les doutes
et les incertitudes. Vous êtes bien plus qu'un(e)
professeur(e) ; vous êtes une personne qui nous
protège des difficultés de la vie, en nous offrant
une stabilité et une confiance précieuses.
Nous vous sommes infiniment
reconnaissants pour tout ce que vous faites pour
nous, et c’est un privilège d’apprendre sous
votre direction.

April 14, 2025


1
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

Table de matière
Remerciment...........................................1
INTRODUCTION AU RAPPORT....................8
Rappel SQL............................................10
🔹 Création de Bases de Données et Tables...............10
🔹 Types de Données SQL (MySQL).................................11
🔹 Modification de Structure (ALTER TABLE).............13
🔹 Manipulation des Données.............................................14
🔹 Contraintes d'Intégrité......................................................15
🔹 Contraintes de Domaine......................................................15
🔹 Clés Primaires et Étrangères................................................15
🔹 Actions Référentielles..........................................................16
🔹Suppression (DROP).............................................................16
🔹 Les requêtes SQL..................................................................17
🔹Union, intersection, exception.......................................17
🔹 Les jointures............................................................................18
Introduction à PL/SQL............................19
🔹 Caractéristiques....................................................................19
🔹 Différence entre SQL et PL/SQL...................................19
🔹 SQL Developer : Outils et fonctionnalités.............20
🔹 Feuille SQL...............................................................................20
April 14, 2025
2
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Structure...................................................................................21
🔹 PL/SQL et Manipulation de Données.........................21
🔹Quelque commandes...........................................................21
Les Variables en PL/SQL.........................23
🔹 Déclaration de Variables..................................................23
🔹 Règles de nommage............................................................23
🔹 Conversion de Types............................................................23
🔹 Syntaxe de Déclaration........................................................24
🔹 Variables de Substitution et de Liaison................................24
🔹 Lecture d’un Bloc depuis SQL Plus.......................................24
🔹 Types de Données Personnalisés...............................25
🔹 Sous-type (SUBTYPE)...........................................................25
🔹 Structure (RECORD).............................................................25
🔹 Tableau (TABLE)................................................................... 25
🔹 Tableaux et Structures.....................................................26
🔹 Tableau de Structure............................................................26
🔹 Tableaux pré-dimensionnés.................................................26
🔹 Fonctions sur les Tableaux.............................................26
🔹 Variables Basées sur une Table...................................26
🔹 Basé sur une colonne (%TYPE)............................................27
🔹 Basé sur une ligne(%ROWTYPE)..........................................27
ACCÈS AUX TABLES EN PL/SQL................28
🔹 Le SELECT INTO.....................................................................28
🔹 BULK COLLECT........................................................................29

April 14, 2025


3
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 INSERT INTO............................................................................29
🔹 UPDATE.......................................................................................30
🔹 DELETE........................................................................................31
🔹 ATTRIBUTS SQL......................................................................32
🔹CLAUSE RETURNING.............................................................33
✅ Résumé.......................................................................................34
STRUCTURES DE CONTRÔLE EN PL/SQL. . .35
🔹 IF THEN ELSEIF ELSE..........................................................35
🔹 CASE WHEN..............................................................................36
🔹LOOP..............................................................................................37
🔹 WHILE LOOP.............................................................................38
🔹FOR LOOP...................................................................................39
🔹 GOTO............................................................................................40
✅ Résumé.......................................................................................42
Les Curseurs en PL/SQL..........................43
🔹 Introduction aux Curseurs..............................................43
🔹 Déclaration d’un Curseur.................................................43
🔹 Ouverture et Fermeture d’un Curseur.....................44
🔹 Lecture d’une Ligne avec un Curseur.......................45
🔹 Lecture avec condition.........................................................46
🔹 Lecture Complète avec Boucle (LOOP).................................47
🔹 Utilisation de FOR avec un Curseur......................................47
🔹 Passage de Paramètres dans un Curseur.............................48
🔹 Curseur avec FOR UPDATE...................................................48

April 14, 2025


4
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Les Attributs des Curseurs en PL/SQL.....................49


🔹 Utilisation de CURS%FOUND et CURS%NOTFOUND....49
🔹 Utilisation de CURS%ROWCOUNT........................................51
✅ Résumé.........................................................................................52
EXCEPTIONS EN PL/SQL..........................53
🔹 Exception système nommée..........................................53
🔹 l’exception NO_DATA_FOUND...............................................53
🔹 plusieurs gestionnaires d’exceptions...................................54
🔹 Gestion d’erreur sur curseur................................................54
🔹 Gestion d’exceptions imbriquées.........................................55
🔹 Quelque Erreur standard in pl/sql........................................56
🔹 Exception système anonyme.......................................59
🔹 Traitement global d’erreurs..................................................59
🔹 erreurs système (SQLERRM & SQLCODE)............................60
🔹 Fonction SUBSTR..................................................................60
🔹 SQLERRM(i)..........................................................................60
🔹 Utilisation de paramètres d’exécution.................................62
🔹 Exception utilisateur nommée......................................62
🔹 Erreur Clé étrangère............................................................64
🔹 Exception utilisateur anonyme....................................64
🔹 Gestion des sous-blocs pour continuer après une erreur.....66
✅ Résumé.........................................................................................68
PROGRAMMES STOCKÉES.......................70
🔹 PROCÉDURES STOCKÉES..................................................70

April 14, 2025


5
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹Définition.............................................................................. 70
🔹Syntaxe générale..................................................................71
🔹 LES ARGUMENTS DES PROCÉDURES....................................71
🔹APPELER UNE PROCÉDURE STOCKÉE....................................72
🔹 EXEMPLES DE PROCÉDURES................................................73
🔹 SUPPRIMER UNE PROCÉDURE..............................................77
🔹FONCTIONS STOCKÉES.......................................................78
🔹 Définition............................................................................. 78
🔹 Syntaxe générale.................................................................78
🔹 Appel d’une fonction............................................................79
🔹 EXEMPLES DE FONCTIONS..............................................79
🔹 FONCTIONS AVANCÉES......................................................80
🔹 Fonction avec TABLEAU en retour dans un bloc...................80
🔹 Appel d’une fonction sans bloc............................................81
🔹SUPPRIMER UNE FONCTION..................................................82
🔹 COMPILATION.......................................................................82
✅ Résumé............................................................................................83
Packages...............................................84
🔹 Definition..................................................................................... 84
🔹Composition d’un package.....................................................84
🔹Structure d’un package...........................................................85
🔹 Exemples de création..............................................................86
🔹Package avec variables globales..........................................86
🔹 Package avec une fonction...................................................87
🔹 Pakage avec plusieurs fonctions.........................................88
April 14, 2025
6
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Package avec curseur.............................................................90


🔹 Package avec structure de tableau....................................91
✅ Résumé............................................................................................93
DECLENCHEUR.......................................94
🔹 Syntaxe générale......................................................................94
🔹 RAISE_APPLICATION_ERROR.................................................96
🔹Déclencheur niveau table ( une seul fois).........................................97
🔹 Déclencheur niveau enregistrement...............................................98
🔹 OLD et NEW.....................................................................................98
🔹 Clause referencing...........................................................................99
🔹Déclencheur conditionnel...............................................................100
✅ Résumé..........................................................................................101
Conclusion...........................................103

INTRODUCTION AU
RAPPORT
PL/SQL (Procedural Language/Structured
Query Language) est une extension de SQL
conçue pour offrir des capacités procédurales au
sein des bases de données Oracle.
Contrairement au SQL standard, qui est un
langage déclaratif axé sur l'interrogation et la
April 14, 2025
7
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

modification des données, PL/SQL permet la


création de scripts complexes intégrant des
variables, des boucles, des conditions et une
gestion des exceptions. Cela permet aux
développeurs d'écrire des applications de base
de données plus efficaces, réutilisables et
sécurisées.
Ce rapport propose une vue d’ensemble
complète de PL/SQL, en abordant ses principales
caractéristiques, ses différences avec SQL et son
implémentation pratique à l’aide d’Oracle SQL
Developer. Il explore des concepts
fondamentaux tels que la déclaration de
variables, la manipulation des données et les
structures de contrôle, ainsi que des notions
plus avancées comme le traitement en bloc des
données et la création de types de données
personnalisés. De plus, il détaille les différentes
opérations réalisées sur les tables, notamment
les commandes SELECT, INSERT, UPDATE et
DELETE, tout en mettant en avant les attributs
SQL essentiels et les techniques d’optimisation.
L’apprentissage de ce langage a été une
expérience enrichissante, soutenue par des
ressources précieuses et un encadrement de
qualité. Ce rapport reflète les connaissances
April 14, 2025
8
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

acquises et l'importance de PL/SQL dans le


développement et la gestion des bases de
données. Il vise à offrir une synthèse claire et
structurée, permettant de mieux appréhender
les principes fondamentaux et les bonnes
pratiques associées à ce langage

April 14, 2025


9
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

Rappel SQL

🔹 Création de Bases de
Données et Tables
 Créer une Base de Données
 Syntaxe de base :

 Éviter les erreurs si la base existe déjà


(MySQL) :

 Créer une Table


 Syntaxe générale :

April 14, 2025


10
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

 Contraintes courantes
o NOT NULL : Valeur obligatoire.
o DEFAULT valeur : Valeur par défaut.
o PRIMARY KEY : Clé primaire.
Exemple :

🔹 Types de Données SQL


(MySQL)

 Types Numériques

April 14, 2025


11
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

Plage de
Type Description Taille
Valeurs

Entier très 1
TINYINT -128 à +127
petit octet

0 à 18 446
BIGINT
Entier positif 744 073 8
UNSIGNE
grand 709 551 octets
D
615

Nombre
Variab
DECIMAL décimal (ex: Variable
le
12.99)

 Types Chaînes de Caractères

Taille
Taille
Type Description Stocka
Max
ge

Texte 65 535
VARCHA L +1
variable (ex: caractère
R(X) octet
prénom) s

TEXT Texte long 65 535 L +2

April 14, 2025


12
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

Taille
Taille
Type Description Stocka
Max
ge

(ex: caractère
octets
description) s

 Types Date/Heure

Format
Type Plage de Valeurs
Exemple

1000-01-01 à 9999-
DATE AAAA-MM-JJ
12-31

1000-01-01 00:00:00
DATETI AAAA-MM-JJ
à 9999-12-31
ME HH:MM:SS
23:59:59

🔹 Modification de Structure
(ALTER TABLE)
 Ajouter une colonne :

April 14, 2025


13
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

 Supprimer une colonne :

 Renommer une colonne :

🔹 Manipulation des
Données
 INSERT INTO
 Insertion simple :

 Insertion multiple :

 DELETE
 Supprimer avec condition :

April 14, 2025


14
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

Attention : Sans WHERE, toutes les lignes sont


supprimées !
 UPDATE
 Mise à jour ciblée :

🔹 Contraintes d'Intégrité
🔹 Contraintes de Domaine
 NOT NULL : Champ obligatoire.
 DEFAULT : Valeur par défaut (ex: DEFAULT
CURRENT_DATE).
 CHECK : Validation personnalisée (ex: CHECK
(age >= 18)).

🔹 Clés Primaires et Étrangères

April 14, 2025


15
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

Suprimer un clé étranger


Etape 1: trouver le code du clé en utilisant
Etape 2

🔹 Actions Référentielles
[ON DELETE {CASCADE | SET NULL | NO ACTION
| RESTRICT}]
[ON UPDATE {CASCADE | SET NULL | NO
ACTION RESTRIC }] Exemple :

🔹Suppression (DROP)
 Base de données :

April 14, 2025


16
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

 Table :

🔹 Les requêtes SQL

🔹Union, intersection,
exception
✔️Ils travaillent sur les lignes complètes
 Ils combinent les résultats de deux
requêtes indépendantes.
 Les requêtes doivent avoir le même
nombre de colonnes et des types
compatibles.

April 14, 2025


17
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Les jointures

April 14, 2025


18
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

 Les jointures travaillent sur les relations


logiques entre les lignes : elles permettent
de relier des colonnes entre elles via des
conditions (ON, USING, etc.).
 Elles construisent des lignes enrichies en
combinant des colonnes issues de
différentes tables.

Introduction à PL/SQL
• PL/SQL : Langage procédural pour les bases
de données.

🔹 Caractéristiques
• Permet d’écrire des blocs de programme.
• Autorise l’utilisation de variables.
• Prend en charge les structures de contrôle
(boucles, conditions).
• Permet l’utilisation de procédures, fonctions,
triggers et packages.

🔹 Différence entre SQL et


PL/SQL
SQL PL/SQL

April 14, 2025


19
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

Langage déclaratif Langage procédural


Pas de variables de Variables autorisées
données
Pas de structure de Prend en charge les
contrôle boucles (for, while,
etc.)
Exécute une seule Exécute plusieurs
opération opérations en un bloc
Interagit directement Peut être incorporé
avec le serveur dans SQL
Orienté données Orienté application
Utilisé pour requêtes Utilisé pour blocs,
DDL et DML procédures,
déclencheurs

🔹 SQL Developer : Outils et


fonctionnalités
• Auto-formatage et complétion de code.
• Débogueur intégré.
• Navigation entre les objets.
• Exécution de scripts.
• Modèle de code.

April 14, 2025


20
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Feuille SQL
Actions possibles :
o Exécuter des instructions.
o Formater des requêtes.
o Afficher les résultats et erreurs.
o Commit / Rollback.
o Suppression et actualisation des données.

🔹 Structure

• Connexion de l’utilisateur depuis CMD.

April 14, 2025


21
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 PL/SQL et Manipulation
de Données
• LMD (Langage de Manipulation de Données)
autorisé.
• LDD (Langage de Définition de Données)
interdit dans certains contextes.

🔹Quelque commandes

April 14, 2025


22
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

Les Variables en
PL/SQL
🔹 Déclaration de Variables
• Utilisation du bloc DECLARE pour déclarer
les variables avant l’exécution du programme.

🔹 Règles de nommage
 Longueur ≤ 30 caractères.
 Doit commencer par une lettre.
 Peut contenir lettres (A-Z), chiffres (0-9), et
symboles ($, _, #).
 Ne doit pas être un mot réservé.

April 14, 2025


23
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Conversion de Types
• Conversion Explicite :
o TO_DATE()
o TO_CHAR()
• Conversion Implicite :
o Réalisée automatiquement par Oracle (ex.
affectation d’une variable).

🔹 Syntaxe de Déclaration

• CONSTANT : Rend la variable constante.


• NOT NULL : Empêche une valeur NULL.
• DEFAULT ou := : Définit une valeur par
défaut.

🔹 Variables de Substitution et de
Liaison
• Variable de substitution : &nom_variable
• Variable de liaison : :nom_variable
o Exécutée avec set SERVEROUTPUT on.

April 14, 2025


24
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Lecture d’un Bloc depuis SQL


Plus
Enregistrer le bloc dans un fichier .SQL en
ajoutant / à la fin.
1. Se connecter à l’instance avec :
sqlplus DBA1/DBA1@localhost:1521/XEPDB1
Exécuter le fichier avec :
@C:\Users\reda\Desktop\BD1.sql

🔹 Types de Données
Personnalisés
🔹 Sous-type (SUBTYPE)

Permet de créer un type dérivé.

🔹 Structure (RECORD)

Regroupe plusieurs champs sous un même type.


April 14, 2025
25
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Tableau (TABLE)
Définition et manipulation d’un tableau indexé.

🔹 Tableaux et Structures
🔹 Tableau de Structure
 Exemple : Créer un tableau pour stocker
des employés.

🔹 Tableaux pré-dimensionnés

🔹 Fonctions sur les


Tableaux
• EXISTS(n), COUNT, FIRST, LAST, PRIOR(n),
NEXT(n), TRIM(n), DELETE(n)
April 14, 2025
26
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Variables Basées sur une


Table

🔹 Basé sur une colonne (%TYPE)

🔹 Basé sur une ligne(%ROWTYPE)

April 14, 2025


27
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

ACCÈS AUX TABLES EN


PL/SQL
🔹 Le SELECT INTO
• Permet de récupérer une seule valeur à la
fois.
• Syntaxe :

• Exemple : Afficher le nombre de bateaux :

April 14, 2025


28
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

⚠ Attention : Si SELECT INTO ne retourne


aucune ligne, une erreur est générée.
________________________________________

🔹 BULK COLLECT
• Permet de récupérer plusieurs lignes à la fois
dans un tableau PL/SQL.
• Syntaxe :

• Exemple : Stocker toutes les lignes de la


table bateau :

________________________________________

🔹 INSERT INTO
• Ajoute une nouvelle ligne dans une table.

April 14, 2025


29
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

• Syntaxe :

• Exemple : Insérer un nouveau bateau :

________________________________________

🔹 UPDATE
• Modifie une ou plusieurs valeurs dans une
table.
• Syntaxe :

• Exemple : Modifier le prix d'une classe de


voyage :
April 14, 2025
30
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

________________________________________

🔹 DELETE
• Supprime une ligne d’une table.
• Syntaxe :

• Exemple : Supprimer un bateau :

April 14, 2025


31
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

________________________________________

🔹 ATTRIBUTS SQL
• SQL%FOUND : TRUE si une requête a affecté
des lignes.
• SQL%NOTFOUND : TRUE si aucune ligne n'a
été affectée.
• SQL%ROWCOUNT : Nombre de lignes
affectées.
Exemple : Vérifier une mise à jour

April 14, 2025


32
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

________________________________________

🔹CLAUSE RETURNING
• Retourne les valeurs d’un enregistrement
affecté par INSERT, UPDATE ou DELETE.
• Syntaxe :

• Exemple : Insérer et récupérer un bateau :

April 14, 2025


33
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

✅ Résumé
• SELECT INTO → Récupérer une ligne
• BULK COLLECT → Récupérer plusieurs lignes
• INSERT INTO → Ajouter une ligne
• UPDATE → Modifier une ligne
• DELETE → Supprimer une ligne
• RETURNING → Récupérer les valeurs d’un
enregistrement après modification
• SQL%FOUND / SQL%ROWCOUNT → Vérifier
l’impact d’une requête

April 14, 2025


34
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

STRUCTURES DE
CONTRÔLE EN PL/SQL
🔹 IF THEN ELSEIF ELSE
• Permet d'exécuter un bloc de code selon une
condition.
• Syntaxe :

• Exemple : Vérifier la disponibilité des classes


:

April 14, 2025


35
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

________________________________________

🔹 CASE WHEN
• Similaire à IF, mais plus adapté aux
conditions multiples.
• Syntaxe :

April 14, 2025


36
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

• Exemple :

________________________________________

🔹LOOP
• Exécute un bloc de code en boucle jusqu'à
une condition de sortie.
• Syntaxe :

• Exemple : Boucle de comptage :

April 14, 2025


37
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

________________________________________

🔹 WHILE LOOP
• Répète l’exécution tant qu’une condition est
vraie.
• Syntaxe :

• Exemple :

April 14, 2025


38
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

________________________________________

🔹FOR LOOP
• Répète un bloc pour une plage de valeurs.
• Syntaxe :

• Exemple : Calcul de la somme des 100


premiers nombres :

April 14, 2025


39
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

________________________________________

🔹 GOTO
• Permet de sauter à une instruction.
• Syntaxe :

• Exemple :

April 14, 2025


40
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

✅ Résumé
• IF THEN ELSE → Conditions simples et
multiples
• CASE WHEN → Alternative compacte aux IF
April 14, 2025
41
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

• LOOP → Répétition avec sortie manuelle


• WHILE LOOP → Exécute tant qu'une
condition est vraie
• FOR LOOP → Boucle de comptage
automatique
• GOTO → Sauter à une instruction spécifique

Les Curseurs en PL/SQL

April 14, 2025


42
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Introduction aux
Curseurs
 Un curseur est un mécanisme permettant
de manipuler des résultats de requêtes SQL.
 Étapes principales d'utilisation :
1. Déclaration (DECLARE)
2. Ouverture (OPEN)
3. Lecture (FETCH)
4. Fermeture (CLOSE)

🔹 Déclaration d’un Curseur


 Syntaxe :

 Exemple :

April 14, 2025


43
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Ouverture et Fermeture
d’un Curseur
 Syntaxe :

 Exemple :

April 14, 2025


44
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Lecture d’une Ligne avec


un Curseur
 Syntaxe :

 Exemple :

April 14, 2025


45
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Lecture avec condition


 Exemple : Lecture conditionnelle avec
un nombre aléatoire

🔹 Lecture Complète avec Boucle


(LOOP)
 Utilisation d’une boucle pour parcourir
toutes les lignes :

April 14, 2025


46
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Utilisation de FOR avec un


Curseur
 Lecture automatique sans FETCH
explicite :

🔹 Passage de Paramètres dans un


Curseur
 Exemple : Lecture conditionnelle d'un
port par état

April 14, 2025


47
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Curseur avec FOR UPDATE


 Permet de verrouiller des enregistrements
pour éviter leur modification par d’autres
sessions.
 Syntaxe :

 Exemple :

April 14, 2025


48
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Les Attributs des


Curseurs en PL/SQL
Les curseurs possèdent plusieurs attributs
qui permettent de vérifier leur état pendant
l'exécution.

🔹 Utilisation de CURS%FOUND
et CURS%NOTFOUND
Ces attributs permettent de vérifier si une
ligne a été trouvée après un FETCH.
Exemple : Lire une ligne et vérifier si
elle existe

April 14, 2025


49
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

✔ Si une ligne est trouvée, cur_bateau%FOUND est


TRUE.
✔ Si aucune ligne n'est trouvée, cur_bateau
%NOTFOUND est TRUE.

🔹CURS%NOTFOUND dans une Boucle

%NOTFOUND est souvent utilisé dans une


boucle pour arrêter la lecture lorsqu’il
n’y a plus de lignes.
Exemple : Lecture complète avec
%NOTFOUND
✔ Tant qu'il y a des lignes, cur_bateau
%NOTFOUND est FALSE.
✔ Quand il n’y a plus de lignes, cur_bateau
%NOTFOUND devient TRUE et la boucle
s'arrête.

🔹 Utilisation de CURS%ROWCOUNT
%ROWCOUNT permet de compter combien
de lignes ont été lues depuis l’ouverture
du curseur.
Exemple : Afficher le nombre de lignes
lues

April 14, 2025


50
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

✔ Chaque fois qu'un FETCH est exécuté,


%ROWCOUNT augmente de 1.
✔ cur_bateau%ROWCOUNT contient le
nombre total de lignes lues après la
boucle.

✅ Résumé
 Déclaration ➝ CURSOR cur_name IS
SELECT ...;
 Ouverture ➝ OPEN cur_name;
 Lecture ➝ FETCH cur_name INTO variable;
 Fermeture ➝ CLOSE cur_name;
 CURS%ISOPEN ➝ Retourne TRUE si le
curseur est ouvert, sinon FALSE.
April 14, 2025
51
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

 Nombre de lignes lues ➝ cur_name


%ROWCOUNT
 Lecture complète ➝ LOOP ➝ FETCH ➝ EXIT
WHEN cur_name%NOTFOUND;
 Lecture avec FOR ➝ FOR record IN
cur_name LOOP ... END LOOP;
 Passage de paramètres ➝ CURSOR
cur_name(param TYPE) IS SELECT ... WHERE
colonne = param;
 Verrouillage (FOR UPDATE) ➝ CURSOR
cur_name IS SELECT ... FOR UPDATE;
 CURS%FOUND ➝ Retourne TRUE si le
FETCH a réussi (une ligne a été récupérée),
sinon FALSE.
 CURS%NOTFOUND ➝ Retourne TRUE si le
FETCH n'a pas trouvé de ligne, sinon FALSE.
 CURS%ROWCOUNT ➝ Retourne le nombre
de lignes extraites depuis l'ouverture du
curseur.

EXCEPTIONS EN
PL/SQL

April 14, 2025


52
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Exception système
nommée
Les exceptions système nommées sont des
erreurs prédéfinies par Oracle et identifiables
par leur nom. Elles concernent les erreurs
courantes pouvant se produire pendant
l’exécution d’un bloc PL/SQL.

🔹 l’exception NO_DATA_FOUND

📌 Ici, on capte NO_DATA_FOUND, une


exception système nommée, levée quand la
requête ne retourne aucune ligne.

April 14, 2025


53
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 plusieurs gestionnaires
d’exceptions

⚠️Ici, on gère à la fois le cas où aucune


donnée n’est trouvée (NO_DATA_FOUND) et
toute autre erreur non précisée grâce à
WHEN OTHERS. Par exemple, si la requête
retourne plusieurs lignes, cela provoquera une
exception TOO_MANY_ROWS captée par WHEN
OTHERS.

🔹 Gestion d’erreur sur curseur

April 14, 2025


54
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

⚠️CURSOR_ALREADY_OPEN est une exception


système nommée déclenchée lorsqu'on tente
d’ouvrir un curseur déjà ouvert.

🔹 Gestion d’exceptions imbriquées

April 14, 2025


55
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

Ici, on a deux blocs : un sous-bloc avec sa


propre gestion d’erreur, et un bloc externe qui
gère la même exception si elle remonte.

🔹 Quelque Erreur standard in pl/sql

April 14, 2025


56
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

April 14, 2025


57
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Exception système
anonyme
Les exceptions système anonymes sont les
erreurs levées par Oracle mais non nommées
explicitement (par exemple ORA-01403, ORA-
00001, etc.).
🔹 Elles ne disposent pas de nom réservé dans
PL/SQL.
April 14, 2025
58
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Elles sont capturées à l’aide du gestionnaire


générique WHEN OTHERS.
🔹 Pour obtenir plus d’informations, on utilise
SQLERRM (message) et SQLCODE (code).

🔹 Traitement global d’erreurs

C’est un exemple minimal de traitement


générique avec WHEN OTHERS.

🔹 erreurs système (SQLERRM &


SQLCODE)
Boucle sur toutes les erreurs entre -2000 et 0 :

April 14, 2025


59
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Fonction SUBSTR
Objectif : Extrait une sous-chaîne d'une chaîne
de caractères.
Syntaxe : SUBSTR(chaîne, position_départ,
longueur)
Dans votre cas :
 chaîne = SQLERRM(i) (le message d'erreur
pour le numéro d'erreur i)
 position_départ = 1 (commence au début de
la chaîne)
 longueur = 100 (prend les 100 premiers
caractères)

🔹 SQLERRM(i)
 Retourne le message d'erreur associé au
numéro i.
 Lorsque i = 0, il retourne "ORA-0000: normal,
successful completion" ("ORA-0000 :
achèvement normal et réussi").

April 14, 2025


60
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

 Pour les nombres négatifs (comme dans


votre boucle), il retourne les messages
d'erreur prédéfinis d'Oracle.
En contexte :
Votre boucle de -2000 à 0 vérifie probablement
tous les messages d'erreur possibles d'Oracle,
et SUBSTR limite chaque message à 100
caractères

ℹ️SQLERRM retourne le message d’erreur, et


SQLCODE le code d’erreur numérique.

April 14, 2025


61
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Utilisation de paramètres
d’exécution

Cela permet d’injecter un code d’erreur


dynamiquement via substitution (&code).

🔹 Exception utilisateur
nommée
Les exceptions utilisateur nommées sont
déclarées explicitement par le développeur
avec DECLARE, et éventuellement associées à
un code d’erreur Oracle grâce à la directive
PRAGMA EXCEPTION_INIT.
🔹 Elles permettent de gérer des erreurs précises
comme les violations de contraintes (-1, -2292,
etc.).

April 14, 2025


62
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Très utiles pour donner des noms parlants à


des erreurs métiers ou des contraintes
spécifiques.
Exception associée à un code Oracle avec
PRAGMA :

erreur EXCEPTION;
 Objectif : Déclare une exception
personnalisée nommée erreur.
 Fonctionnement :
o Crée une exception définie par
l'utilisateur, qui peut être levée
manuellement ou associée à une erreur
Oracle.
o Sans liaison à un code d'erreur, elle ne
déclenche rien par défaut.
April 14, 2025
63
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

PRAGMA EXCEPTION_INIT(erreur, -1);


 Objectif : Lie l'exception erreur au code
d'erreur Oracle -1 (équivalent à ORA-
00001 – violation de contrainte d'unicité).
 PRAGMA : Une directive de compilation
(traitée avant l'exécution).
 EXCEPTION_INIT : Associe un nom
d'exception à un numéro d'erreur Oracle.
 -1 : Le code interne d'Oracle pour ORA-
00001.

🔹 Erreur Clé étrangère

🔹 Exception utilisateur
anonyme

April 14, 2025


64
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

Les exceptions utilisateur anonymes sont


déclarées localement dans un bloc PL/SQL,
sans être associées à un code Oracle. Elles sont
levées avec RAISE dans une condition
personnalisée, souvent en lien avec une logique
métier.
🔹 Elles sont spécifiques à un traitement donné.
🔹 Elles permettent d’implémenter des règles
personnalisées (par exemple : date invalide,
seuil dépassé...).

Comparaison de dates :

April 14, 2025


65
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

Autre variante avec déplacement de l’UPDATE :

🔹 Gestion des sous-blocs pour


continuer après une erreur

April 14, 2025


66
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

✅ Grâce aux sous-blocs, le traitement continue


même si une exception est levée dans une
partie.

April 14, 2025


67
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

✅ Résumé
Les exceptions en PL/SQL offrent des
mécanismes puissants pour :
 Capturer les erreurs système (nommées
ou non),
 Définir des règles métier
personnalisées via des exceptions
utilisateur,
 Protéger le programme contre des
interruptions brutales,
 Améliorer la lisibilité et la robustesse
du code.
4 Types d’Exceptions en PL/SQL
Type Nom Gestion

Exceptio NO_DATA_FOUND, C WHEN


n URSOR_ALREADY_O NOM_EXCEPTIO
système PEN, etc. N
nommée

WHEN OTHERS
Exceptio (Pas de nom)
n

April 14, 2025


68
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

Type Nom Gestion

système
anonyme

Exceptio
n Nom explicite DECLARE, PRAGM
utilisateu (défini par le dev) A, WHEN NOM
r
nommée

Exceptio
n Levée localement RAISE dans un
utilisateu (RAISE) bloc
r
anonyme

April 14, 2025


69
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

PROGRAMMES
STOCKÉES
Un programme stocké en PL/SQL est un sous-
programme qui est :
 Écrit en PL/SQL.
 Stocké dans la base de données (sous forme
compilée).
 Appelé pour effectuer des traitements
spécifiques.
Il existe deux types de programmes
stockés :
1. Procédures stockées (ne retournent
pas de valeur).
2. Fonctions stockées (retournent une
valeur).
April 14, 2025
70
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 PROCÉDURES STOCKÉES
🔹Définition
Une procédure stockée est un bloc PL/SQL
qui :
 Réalise un traitement.
 Ne retourne pas de valeur directement.
 Peut recevoir des arguments (en entrée,
sortie ou les deux).
 Est stockée dans la base pour
réutilisation.
 Stockée compilée dans la base de données.
 Exécutable indépendamment ou à l’intérieur
d’un bloc PL/SQL.
 Peut appeler d’autres programmes PL/SQL.

🔹Syntaxe générale

April 14, 2025


71
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 LES ARGUMENTS DES


PROCÉDURES
▶️Syntaxe des paramètres

▶️Description des modes :


Mode Description
Paramètre en entrée : transmis par le
IN programme appelant, non modifiable
dans la procédure.
Paramètre en sortie : valeur définie
OUT dans la procédure, renvoyée au
programme appelant.
Paramètre à double sens : transmis par
IN OUT le programme appelant, modifiable et
renvoyé.
NOCOP Optimisation facultative : passage par
Y référence (pointeur) au lieu de copier
April 14, 2025
72
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

Mode Description
les données.
Représente un type de données SQL
TYPE
valide (INT, VARCHAR2, DATE…).

🔹APPELER UNE PROCÉDURE


STOCKÉE
✳️Syntaxes disponibles :

🔹 EXEMPLES DE PROCÉDURES
🔹 Cas 1 : Sans argument
Objectif : augmenter le prix de 10% des classes
dont le numéro est 1.

April 14, 2025


73
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Cas 2 : Avec argument (IN)


Objectif : même traitement, mais avec le
numéro de classe passé en argument.

April 14, 2025


74
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Cas 3 : Avec argument OUT


Objectif :
 Passer le numéro de classe en entrée.
 Retourner le nouveau prix via un paramètre
OUT.
 Affichage conditionné au numéro de voyage
= 'AC2001'.

April 14, 2025


75
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Cas 4 : plusieurs paramètres (IN + autres


types)

April 14, 2025


76
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Cas 5 : OUT sans bloc (sans BEGIN/END)


Objectif : mettre à jour les prix et afficher le
voyage avec le prix le plus élevé.

April 14, 2025


77
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 SUPPRIMER UNE PROCÉDURE

🔹FONCTIONS STOCKÉES
🔹 Définition

Une fonction stockée est similaire à une


procédure, à l’exception qu’elle :
 Retourne une valeur obligatoirement.
 Peut être utilisée dans une requête SQL ou
dans une expression.
 Peut aussi recevoir des arguments.

🔹 Syntaxe générale

April 14, 2025


78
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Appel d’une fonction

🔹 EXEMPLES DE FONCTIONS
🔹 Cas 1 : Sans argument
Objectif : retourner le nombre total de
bateaux.

April 14, 2025


79
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Cas 2 : Avec argument


Objectif : retourner le nom du modèle d’un
bateau à partir de son numéro.

April 14, 2025


80
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 FONCTIONS AVANCÉES
🔹 Fonction avec TABLEAU en retour
dans un bloc
Objectif :
 Lire la table bateau à partir d’un numéro
donné.
 Retourner les lignes sous forme de tableau.

📌 Utilisation de BULK COLLECT pour charger les


données dans une collection indexée.

April 14, 2025


81
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Appel d’une fonction sans bloc


Objectif : Retourner le prix le plus cher pour
un voyage
donné.

🔹SUPPRIMER UNE FONCTION

🔹 COMPILATION
Permet de recompiler un programme stocké
après modification :

April 14, 2025


82
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

✅ Résumé
 Procédures → Sous-programmes stockés ne
retournant aucune valeur mais effectuant un
traitement.
 Fonctions → Sous-programmes similaires
aux procédures, mais retournent une valeur.
 Arguments → IN, OUT, IN OUT, NOCOPY
selon les besoins de passage de paramètres.
 Exécution → Via BEGIN…END, CALL,
EXECUTE ou même dans des requêtes pour
les fonctions.
 Utilisation avancée → Fonctions avec BULK
COLLECT, tableaux d’objets, fonctions sans
bloc, etc.
 Métadonnées → Les vues USER_SOURCE,
ALL_SOURCE, DBA_SOURCE permettent de
consulter le code.
 Maintenance → Compilation avec ALTER,
suppression avec DROP.

April 14, 2025


83
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

Packages

🔹 Definition
Un package est une unité logique qui permet
de regrouper plusieurs objets PL/SQL tels
que :
 Des fonctions
 Des procédures
 Des variables globales
 Des types
 Des curseurs
📌 Il facilite l'organisation, la maintenance et la
sécurité du code PL/SQL.

🔹Composition d’un package


Un package est constitué de deux parties
distinctes :
1. Spécification du package (entête)

April 14, 2025


84
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

o Contient les déclarations visibles par


les utilisateurs (procédures, fonctions,
types, curseurs…).
2. Corps du package (implémentation)
o Contient l’implémentation des
procédures, fonctions, curseurs, etc.
⚠️Le corps peut être compilé
indépendamment de la spécification, mais
l’inverse n’est pas possible si une fonction est
définie.

🔹Structure d’un package


✳️SYNTAXE : Spécification (entête)

✳️SYNTAXE : Corps du package

April 14, 2025


85
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Exemples de création
🔹Package avec variables
globales

April 14, 2025


86
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

✅ Permet de partager des valeurs globales


entre plusieurs blocs PL/SQL.

🔹 Package avec une fonction

April 14, 2025


87
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Pakage avec plusieurs


fonctions
Objectif :
 Vérifier si un bateau existe.
 Vérifier si une classe existe.

April 14, 2025


88
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

April 14, 2025


89
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Package avec curseur


Objectif :
 Lire les ports par état.
 Utiliser un curseur avec retour implicite d’un
enregistrement.

April 14, 2025


90
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Package avec structure de


tableau
Objectif :
 Définir une collection globale dans un
package.
 Retourner un tableau d’enregistrements.

April 14, 2025


91
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

✅ Résumé
Élément Description
Un regroupement d’objets
Package PL/SQL (procédures, fonctions,
curseurs, variables globales).
Partie publique visible du
Spécification
package (déclarations).
April 14, 2025
92
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

Élément Description
Partie privée avec les
Corps
implémentations.
Organisation, encapsulation,
Avantages
réutilisabilité, performance.
Curseurs, tableaux, validation
Fonctionnalit
conditionnelle, exécution
és avancées
globale.

DECLENCHEUR
Un déclencheur (trigger) est un objet PL/SQL
stocké en base qui permet d’exécuter
automatiquement un bloc d’instructions
lorsqu’un événement LMD (INSERT,
UPDATE, DELETE) survient sur une table.
April 14, 2025
93
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Il est associé à une table


🔹 Il peut être déclenché avant (BEFORE) ou
après (AFTER) l’événement
🔹 ⚠️Il est interdit d'utiliser COMMIT ou
ROLLBACK dans un déclencheur

🔹 Syntaxe générale

🔁 Multiples déclencheurs sur une même


table
 Il est possible d’avoir plusieurs triggers
sur la même table.
 Plusieurs triggers du même type (ex :
plusieurs AFTER INSERT) sont possibles.

April 14, 2025


94
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

 Leur ordre d’exécution est séquentiel,


mais : le dernier créé est exécuté en
premier.

🔢 Séquence manuelle pour tests

Exemple après compilation

Exemple

April 14, 2025


95
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 RAISE_APPLICATION_ERROR

Permet de provoquer une erreur


personnalisée, souvent utilisée dans les
triggers.
🔸 Code d’erreur entre -20000 et -20999
🔸 en sort de tous block /arrêt de programme

April 14, 2025


96
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹Déclencheur niveau table ( une


seul fois)

April 14, 2025


97
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Déclencheur niveau
enregistrement

🔹 OLD et NEW

April 14, 2025


98
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹 Clause referencing

April 14, 2025


99
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

🔹Déclencheur conditionnel

✅ Résumé
Les déclencheurs (ou triggers) en PL/SQL sont
des objets stockés dans la base de données
permettant l'exécution automatique
d'instructions lorsqu’un événement LMD
(INSERT, UPDATE, DELETE) survient sur une
table.
✅ Principales caractéristiques :
April 14, 2025
10
0
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

 Peuvent être exécutés avant (BEFORE) ou


après (AFTER) l’opération.
 Peuvent s’appliquer à tous les
enregistrements (niveau table) ou à
chaque ligne (niveau ROW).
 Ils sont liés à une table spécifique.
 INTERDICTION d’utiliser COMMIT ou
ROLLBACK dans un trigger.
 Il est possible d’en avoir plusieurs par
table, même du même type.
 Les triggers sont exécutés dans l’ordre
dernier créé, premier exécuté.
🧪 Utilisations principales :
 Audit : enregistrer les modifications
(avant/après) dans une table de log.
 Contrôle métier : empêcher certaines
actions (ex. : blocage des modifications en
décembre).
 Validation : contrôler l’évolution de
données sensibles (prix, quantités, etc.).
📌 Concepts clés :

April 14, 2025


10
1
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

 :OLD et :NEW : valeurs avant/après la


modification (accessibles seulement au
niveau ROW).
 RAISE_APPLICATION_ERROR : permet de
lever des erreurs personnalisées (codes
-20000 à -20999,) en sort de tous block
/arrêt de programme.
 REFERENCING : permet d’aliaser :OLD
et :NEW pour plus de lisibilité.
 Les triggers conditionnels peuvent être
filtrés par WHEN (NEW.colonne condition).

Conclusion
En conclusion, PL/SQL s'avère être un langage
puissant et essentiel pour la gestion des bases de
données Oracle. Grâce à sa capacité à manipuler les
données de manière flexible et à automatiser les

April 14, 2025


10
2
Professeur Mr. Reda Korikache Crée par AMRANE Mohammed-Amine
Classe Culture digitale Filiére S2ID

processus, il permet d'optimiser la performance des


applications et de garantir l'intégrité des données. Les
concepts abordés dans ce rapport, tels que les blocs
anonymes, les procédures, les fonctions, et les
triggers, démontrent l'importance de bien maîtriser la
syntaxe et les meilleures pratiques pour développer
des solutions robustes et efficaces.
L'adoption de PL/SQL dans les projets de
développement de bases de données permet non
seulement de faciliter la gestion des données
complexes, mais aussi de simplifier l'administration
des systèmes. À travers l'étude de ses fonctionnalités,
il devient évident que PL/SQL est un atout
incontournable pour les développeurs et les
administrateurs de bases de données, leur permettant
de répondre de manière optimale aux besoins
croissants des entreprises en matière de gestion et
d’analyse des données.
Ainsi, la maîtrise de PL/SQL constitue un élément
clé pour tout professionnel souhaitant exceller dans le
domaine des bases de données et garantir des
performances optimales dans le cadre de projets
complexes.

April 14, 2025


10
3

Vous aimerez peut-être aussi