SlideShare une entreprise Scribd logo
1  sur  24
Introduction au langage PL/SQL
Dr. Mohamed Anis BACH TOBJI
Maitre assistant à l’ESEN – Université de Manouba
Caractéristiques du PL/SQL
 Un langage procédural qui étend SQL. Il est propre à Oracle
 Modulaire, grâce aux blocs, fonctions & procédures, ainsi que les
packages
 Déclaratif : déclaration de variables, constantes, exceptions, de
curseur.
 Fournit les structures itératives et conditionnelles
 Traitement des erreurs (routines ou définies par l’utilisateur)
 Portabilité vers n’importe quel environnement supportant Oracle
 Intégration : pas de problèmes d’intégration entre Oracle et les
environnements de développements
Conventions de programmation
 Conventions du code
 En majuscule
 Les commandes SQL (SELECT, FROM, WHERE etc.)
 Les mots clé PL/SQL (DECLARE, BEGIN, NUMBER etc.)
 En minuscule
 Les noms de variables PL/SQL
 Les noms de colonnes, tables, vues etc.
Conventions de programmation
 Conventions de nommage des variables
Structure d’un bloc PL/SQL
 Un bloc PL/SQL contient trois sections :
 Une section déclarative: optionnelle, contient les déclarations
des variables, constantes, curseurs, exceptions, etc. Commence
par le mot clé DECLARE
 Une section exécutable: obligatoire, contient les requêtes SQL
et les instructions PL/SQL. Commence par le mot BEGIN
 Une section de traitement d’erreurs : optionnelle, contient les
instructions à exécuter au cas où des erreurs se produisent.
Commence par le mot EXCEPTION
 À noter que le bloc se termine par le mot clé END
Structure d’un bloc PL/SQL
 Exemple de bloc PL/SQL
DECLARE
v_sal NUMBER;
BEGIN
SELECT sal INTO v_sal FROM emp
WHERE ename=‘SMITH’;
EXCEPTION
WHEN NO_DATA_FOUND THEN
…
END
Les structures de programme
PL/SQL
 Les blocs anonymes
 Les procédures et fonctions stockées
 Les procédures et fonctions d’application
 Les packages
 Les triggers (déclencheurs) de base de données
 Les triggers (déclencheurs) d’application
Les règles syntaxiques
 Un identifiant :
 Max de 30 caractères, doit débuter par une lettre.
 Ne doit pas être un mot réservé.
 Son nom doit être différent des noms de colonnes.
 Les chaînes de caractères et les dates constantes entre simples
quotes.
 Les commentaires sur plusieurs lignes doivent être inclus entre les
caractères " /* " et " */ "
 Les caractères "- -" sont utilisés pour mettre une seule ligne en
commentaire.
La base de données
exemple
Les types de variables
 Il existe deux types de variables qui fonctionnent sous PL/SQL
 Les variables PL/SQL
 Variable scalaire : contenant une valeur unique
 Variable composée : contenant plusieurs valeurs comme le
RECORD, le TABLE, le NESTED TABLE, le VARRAY
 Variable référence : variable qui pointe vers un type de
données
 LOB : variable localisateur d’objets volumineux tel que les
images et les vidéos
 Les variables non PL/SQL
 Les variables de substitution
 Les variables hôtes
Les types de données
scalaires
 Les principaux types de données scalaires
 Les types numériques
 INTEGER, POSITIVE
 PLS_INTEGER, BINARY_INTEGER
 NUMBER(n,d), DECIMAL, REAL
Les types chaine de caractère
 LONG, VARCHAR2(n)
 CHAR(n)
 Le type booléen
 BOOLEAN (true, false ou null)
 Le type date
 DATE
Les variables scalaires
 Déclaration et initialisation
variable_name [CONSTANT] datatype [NOT NULL] [:=|DEFAULT expr];
 datatype : le type de données de la variable, qui est soit
scalaire, composé, référence ou LOB.
 CONSTANT : contraint la variable à être une constante
 NOT NULL : ce mot clé contraint la variable à contenir une
valeur.
 expr : valeur initiale d’une variable, peut être une valeur
littérale, une autre variable ou une expression impliquant des
opérateurs et des fonctions.
Les variables scalaires
 La déclaration de plusieurs variables sur la même ligne est interdite
 Affectation
 variable := expression;
 DEFAULT : contraint la variable à être une constante
 SELECT expression INTO variable FROM...
 Impossible d’affecter la valeur NULL à une variable déclarée NOT
NULL (l’erreur VALUE_ERROR est renvoyée)
 La contrainte NOT NULL doit être suivie par une initialisation
Les variables scalaires
 Le mot clé %TYPE déclare une variable ayant le même type d’une
autre variable ou d’une colonne d’une table ou vue existantes.
Code PL/SQL Commentaires
DECLARE
v_job emp.job%TYPE;
v_job prend le type de la colonne
job de la table emp.
v_prime NUMBER(5,2) := 500.50;
v_prime_min v_prime%TYPE :=
v_prime*2;
BEGIN
…
v_prime et est initialisée à 500,45.
v_prime_min prend le type de la variable
v_prime
Les variables composées –
le RECORD
 Le mot clé %ROWTYPE déclare une variable RECORD ayant la même
structure que l’enregistrement d’une table/vue.
Code PL/SQL Commentaires
DECLARE
emp_record emp%ROWTYPE;
v_sal NUMBER:=800;
Emp_record prend la structure d’un
enregistrement de la table emp.
BEGIN
emp_record.empno:=2564;
emp_record.sal:=v_sal+100;
…
Accès aux attributs de l’enregistrement
Les variables composées –
le RECORD
 Le mot clé %ROWTYPE déclare une variable RECORD ayant la même
structure que l’enregistrement d’une table/vue.
 À noter qu’avec la directive %ROWTYPE, les attributs n’héritent pas
la contrainte NOT NULL.
Code PL/SQL Commentaires
DECLARE
emp_record emp%ROWTYPE;
v_sal NUMBER:=800;
Emp_record prend la structure d’un
enregistrement de la table emp.
BEGIN
emp_record.empno:=2564;
emp_record.sal:=v_sal+100;
…
Accès aux attributs de l’enregistrement
Les variables composées –
le RECORD
 Pour définir un enregistrement personnalisé, il faut déclarer un type
RECORD
 Ensuite, pour l’utiliser, il faut déclarer une variable avec le type
nomRecord
Les variables composées –
le type TABLE
 Le type TABLE permet la déclaration de tableaux dynamiques (sans
taille initiale fixe)
 Une variable de type TABLE inclut deux colonnes, une clé primaire
de type BINARY_INTEGER et une colonne de type scalaire ou RECORD.
Primary key Colonne
… …
1 Mohamed Toumi
2 Sami Tlili
3 Meriam Bouzid
… …
Les variables composées –
le type TABLE
 Le type TABLE est défini avec cette syntaxe
 La déclaration d’une variable se fait selon cette syntaxe
Les variables composées –
le type TABLE
 Il existe des procédures et des fonctions qui permettent de
manipuler les variables TABLE :
Les variables non-PL/SQL
 Les variables hôtes (dite aussi de session)
 C’est une variable définie dans l’environnement hôte du
programme PL/SQL (SQL*Plus, Forms Developer…)
 Sous SQL*Plus, l’utilisation d’une variable hôte se fait ainsi :
Instructions Commentaires
VARIABLE g_compteur NUMBER;
DECLARE
v_compt NUMBER := 99;
BEGIN
:g_compteur := v_compt+1;
END;
/
PRINT g_compteur;
Déclaration de la variable sous SQL*Plus
Manipulation de la variable (ajout de :)
Affichage de la variable sous SQL*Plus
Les variables non-PL/SQL
 Les variables de substitution
 Une variable de substitution est définie sous SQL*Plus. Sa valeur
est saisie sous SQL*Plus, et est remplacée intégralement dans le bloc
L’utilisation d’une variable de substitution :
Instructions Commentaires
SET SERVEROUTPUT ON
ACCEPT s_nbr PROMPT ‘Saisir un
entier’;
DECLARE
v_doub NUMBER;
BEGIN
v_doub := &s_nbr;
DBMS_OUTPUT.PUT_LINE(‘Le
résultat est ‘||v_doub);
END;
Nécessaire à l’affichage
Saisie de la variable de session s_nbr
Manipulation de la variable (ajout du &)
Affichage de la variable PL/SQL v_doub
Les opérateurs et les
fonctions
Les opérateurs
Arithmétiques
+ , - , * , /
Logiques
AND , OR, NOT
Concaténation
||
Comparaison
= , != , < , > , <= , >= , LIKE , BETWEEN , IS NULL , IN
Les fonctions
Disponibles dans les instructions PL/SQL
Toutes les fonctions de ligne (lower, substr, length, round,
add_months etc.)
Les blocs imbriqués
Blocs PL/SQL
DECLARE
var1
BEGIN
…
DECLARE
var2
BEGIN
…
DECLARE
var3
BEGIN
…
END;
END;
…
END;
Portée
de
var3
Portée
de
var2
Portée
de var1

Contenu connexe

Similaire à 1444475541443.pptx

Le langage plsql
Le langage plsqlLe langage plsql
Le langage plsqlkati_f87
 
PLSQL-Complements-4p.pdf
PLSQL-Complements-4p.pdfPLSQL-Complements-4p.pdf
PLSQL-Complements-4p.pdfRihabBENLAMINE
 
presentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdfpresentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdfRihabBENLAMINE
 
Pl/sql - interaction avec la base de données & structures de contrôle
Pl/sql  - interaction avec la base de données & structures de contrôlePl/sql  - interaction avec la base de données & structures de contrôle
Pl/sql - interaction avec la base de données & structures de contrôleAbdelouahed Abdou
 
Support formation vidéo : SQL pour les (grands) débutants
Support formation vidéo : SQL pour les (grands) débutants Support formation vidéo : SQL pour les (grands) débutants
Support formation vidéo : SQL pour les (grands) débutants SmartnSkilled
 
0519-pdf-php-bases-initiation.pdf
0519-pdf-php-bases-initiation.pdf0519-pdf-php-bases-initiation.pdf
0519-pdf-php-bases-initiation.pdfRihabBENLAMINE
 
seance4-1 php.ppt
seance4-1 php.pptseance4-1 php.ppt
seance4-1 php.pptAmineReal
 
BDA-PL-SQL.pdf11111111111111111111111111
BDA-PL-SQL.pdf11111111111111111111111111BDA-PL-SQL.pdf11111111111111111111111111
BDA-PL-SQL.pdf11111111111111111111111111SaraMeriem1
 
05 visual basic .net - variables, procedures, arguments et structures de cont...
05 visual basic .net - variables, procedures, arguments et structures de cont...05 visual basic .net - variables, procedures, arguments et structures de cont...
05 visual basic .net - variables, procedures, arguments et structures de cont...Hamza SAID
 
Java uik-chap3-bases java
Java uik-chap3-bases javaJava uik-chap3-bases java
Java uik-chap3-bases javaAmel Morchdi
 
downloadfile-101.pptx réseau local installation
downloadfile-101.pptx réseau local installationdownloadfile-101.pptx réseau local installation
downloadfile-101.pptx réseau local installationBensadiSamir
 
.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHPAbdoulaye Dieng
 
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
 

Similaire à 1444475541443.pptx (20)

Le langage plsql
Le langage plsqlLe langage plsql
Le langage plsql
 
Cours3 gdm sql
Cours3 gdm sqlCours3 gdm sql
Cours3 gdm sql
 
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
 
presentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdfpresentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdf
 
La 2ème partie de la présentation PHP
La 2ème partie de la présentation PHPLa 2ème partie de la présentation PHP
La 2ème partie de la présentation PHP
 
Pl/sql - interaction avec la base de données & structures de contrôle
Pl/sql  - interaction avec la base de données & structures de contrôlePl/sql  - interaction avec la base de données & structures de contrôle
Pl/sql - interaction avec la base de données & structures de contrôle
 
SQL.pdf
SQL.pdfSQL.pdf
SQL.pdf
 
Support formation vidéo : SQL pour les (grands) débutants
Support formation vidéo : SQL pour les (grands) débutants Support formation vidéo : SQL pour les (grands) débutants
Support formation vidéo : SQL pour les (grands) débutants
 
0519-pdf-php-bases-initiation.pdf
0519-pdf-php-bases-initiation.pdf0519-pdf-php-bases-initiation.pdf
0519-pdf-php-bases-initiation.pdf
 
seance4-1 php.ppt
seance4-1 php.pptseance4-1 php.ppt
seance4-1 php.ppt
 
memento_java_3c.pptx
memento_java_3c.pptxmemento_java_3c.pptx
memento_java_3c.pptx
 
BDA-PL-SQL.pdf11111111111111111111111111
BDA-PL-SQL.pdf11111111111111111111111111BDA-PL-SQL.pdf11111111111111111111111111
BDA-PL-SQL.pdf11111111111111111111111111
 
PL/SQL:les curseurs
PL/SQL:les curseursPL/SQL:les curseurs
PL/SQL:les curseurs
 
Cours: Spss 2 master comrce
Cours: Spss 2  master comrceCours: Spss 2  master comrce
Cours: Spss 2 master comrce
 
05 visual basic .net - variables, procedures, arguments et structures de cont...
05 visual basic .net - variables, procedures, arguments et structures de cont...05 visual basic .net - variables, procedures, arguments et structures de cont...
05 visual basic .net - variables, procedures, arguments et structures de cont...
 
Java uik-chap3-bases java
Java uik-chap3-bases javaJava uik-chap3-bases java
Java uik-chap3-bases java
 
downloadfile-101.pptx réseau local installation
downloadfile-101.pptx réseau local installationdownloadfile-101.pptx réseau local installation
downloadfile-101.pptx réseau local installation
 
.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP
 
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
 

Dernier

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
 
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
 
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
 
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
 
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
 
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
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxAsmaa105193
 
le present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptxle present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptxmmatar2
 
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
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSKennel
 
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
 
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
 
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
 
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
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptxTxaruka
 
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
 
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
 

Dernier (20)

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
 
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 .
 
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
 
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
 
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
 
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
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. Marocpptx
 
le present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptxle present des verbes reguliers -er.pptx
le present des verbes reguliers -er.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
 
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
 
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
 
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
 
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
 
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
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptx
 
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
 
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
 
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...
 

1444475541443.pptx

  • 1. Introduction au langage PL/SQL Dr. Mohamed Anis BACH TOBJI Maitre assistant à l’ESEN – Université de Manouba
  • 2. Caractéristiques du PL/SQL  Un langage procédural qui étend SQL. Il est propre à Oracle  Modulaire, grâce aux blocs, fonctions & procédures, ainsi que les packages  Déclaratif : déclaration de variables, constantes, exceptions, de curseur.  Fournit les structures itératives et conditionnelles  Traitement des erreurs (routines ou définies par l’utilisateur)  Portabilité vers n’importe quel environnement supportant Oracle  Intégration : pas de problèmes d’intégration entre Oracle et les environnements de développements
  • 3. Conventions de programmation  Conventions du code  En majuscule  Les commandes SQL (SELECT, FROM, WHERE etc.)  Les mots clé PL/SQL (DECLARE, BEGIN, NUMBER etc.)  En minuscule  Les noms de variables PL/SQL  Les noms de colonnes, tables, vues etc.
  • 4. Conventions de programmation  Conventions de nommage des variables
  • 5. Structure d’un bloc PL/SQL  Un bloc PL/SQL contient trois sections :  Une section déclarative: optionnelle, contient les déclarations des variables, constantes, curseurs, exceptions, etc. Commence par le mot clé DECLARE  Une section exécutable: obligatoire, contient les requêtes SQL et les instructions PL/SQL. Commence par le mot BEGIN  Une section de traitement d’erreurs : optionnelle, contient les instructions à exécuter au cas où des erreurs se produisent. Commence par le mot EXCEPTION  À noter que le bloc se termine par le mot clé END
  • 6. Structure d’un bloc PL/SQL  Exemple de bloc PL/SQL DECLARE v_sal NUMBER; BEGIN SELECT sal INTO v_sal FROM emp WHERE ename=‘SMITH’; EXCEPTION WHEN NO_DATA_FOUND THEN … END
  • 7. Les structures de programme PL/SQL  Les blocs anonymes  Les procédures et fonctions stockées  Les procédures et fonctions d’application  Les packages  Les triggers (déclencheurs) de base de données  Les triggers (déclencheurs) d’application
  • 8. Les règles syntaxiques  Un identifiant :  Max de 30 caractères, doit débuter par une lettre.  Ne doit pas être un mot réservé.  Son nom doit être différent des noms de colonnes.  Les chaînes de caractères et les dates constantes entre simples quotes.  Les commentaires sur plusieurs lignes doivent être inclus entre les caractères " /* " et " */ "  Les caractères "- -" sont utilisés pour mettre une seule ligne en commentaire.
  • 9. La base de données exemple
  • 10. Les types de variables  Il existe deux types de variables qui fonctionnent sous PL/SQL  Les variables PL/SQL  Variable scalaire : contenant une valeur unique  Variable composée : contenant plusieurs valeurs comme le RECORD, le TABLE, le NESTED TABLE, le VARRAY  Variable référence : variable qui pointe vers un type de données  LOB : variable localisateur d’objets volumineux tel que les images et les vidéos  Les variables non PL/SQL  Les variables de substitution  Les variables hôtes
  • 11. Les types de données scalaires  Les principaux types de données scalaires  Les types numériques  INTEGER, POSITIVE  PLS_INTEGER, BINARY_INTEGER  NUMBER(n,d), DECIMAL, REAL Les types chaine de caractère  LONG, VARCHAR2(n)  CHAR(n)  Le type booléen  BOOLEAN (true, false ou null)  Le type date  DATE
  • 12. Les variables scalaires  Déclaration et initialisation variable_name [CONSTANT] datatype [NOT NULL] [:=|DEFAULT expr];  datatype : le type de données de la variable, qui est soit scalaire, composé, référence ou LOB.  CONSTANT : contraint la variable à être une constante  NOT NULL : ce mot clé contraint la variable à contenir une valeur.  expr : valeur initiale d’une variable, peut être une valeur littérale, une autre variable ou une expression impliquant des opérateurs et des fonctions.
  • 13. Les variables scalaires  La déclaration de plusieurs variables sur la même ligne est interdite  Affectation  variable := expression;  DEFAULT : contraint la variable à être une constante  SELECT expression INTO variable FROM...  Impossible d’affecter la valeur NULL à une variable déclarée NOT NULL (l’erreur VALUE_ERROR est renvoyée)  La contrainte NOT NULL doit être suivie par une initialisation
  • 14. Les variables scalaires  Le mot clé %TYPE déclare une variable ayant le même type d’une autre variable ou d’une colonne d’une table ou vue existantes. Code PL/SQL Commentaires DECLARE v_job emp.job%TYPE; v_job prend le type de la colonne job de la table emp. v_prime NUMBER(5,2) := 500.50; v_prime_min v_prime%TYPE := v_prime*2; BEGIN … v_prime et est initialisée à 500,45. v_prime_min prend le type de la variable v_prime
  • 15. Les variables composées – le RECORD  Le mot clé %ROWTYPE déclare une variable RECORD ayant la même structure que l’enregistrement d’une table/vue. Code PL/SQL Commentaires DECLARE emp_record emp%ROWTYPE; v_sal NUMBER:=800; Emp_record prend la structure d’un enregistrement de la table emp. BEGIN emp_record.empno:=2564; emp_record.sal:=v_sal+100; … Accès aux attributs de l’enregistrement
  • 16. Les variables composées – le RECORD  Le mot clé %ROWTYPE déclare une variable RECORD ayant la même structure que l’enregistrement d’une table/vue.  À noter qu’avec la directive %ROWTYPE, les attributs n’héritent pas la contrainte NOT NULL. Code PL/SQL Commentaires DECLARE emp_record emp%ROWTYPE; v_sal NUMBER:=800; Emp_record prend la structure d’un enregistrement de la table emp. BEGIN emp_record.empno:=2564; emp_record.sal:=v_sal+100; … Accès aux attributs de l’enregistrement
  • 17. Les variables composées – le RECORD  Pour définir un enregistrement personnalisé, il faut déclarer un type RECORD  Ensuite, pour l’utiliser, il faut déclarer une variable avec le type nomRecord
  • 18. Les variables composées – le type TABLE  Le type TABLE permet la déclaration de tableaux dynamiques (sans taille initiale fixe)  Une variable de type TABLE inclut deux colonnes, une clé primaire de type BINARY_INTEGER et une colonne de type scalaire ou RECORD. Primary key Colonne … … 1 Mohamed Toumi 2 Sami Tlili 3 Meriam Bouzid … …
  • 19. Les variables composées – le type TABLE  Le type TABLE est défini avec cette syntaxe  La déclaration d’une variable se fait selon cette syntaxe
  • 20. Les variables composées – le type TABLE  Il existe des procédures et des fonctions qui permettent de manipuler les variables TABLE :
  • 21. Les variables non-PL/SQL  Les variables hôtes (dite aussi de session)  C’est une variable définie dans l’environnement hôte du programme PL/SQL (SQL*Plus, Forms Developer…)  Sous SQL*Plus, l’utilisation d’une variable hôte se fait ainsi : Instructions Commentaires VARIABLE g_compteur NUMBER; DECLARE v_compt NUMBER := 99; BEGIN :g_compteur := v_compt+1; END; / PRINT g_compteur; Déclaration de la variable sous SQL*Plus Manipulation de la variable (ajout de :) Affichage de la variable sous SQL*Plus
  • 22. Les variables non-PL/SQL  Les variables de substitution  Une variable de substitution est définie sous SQL*Plus. Sa valeur est saisie sous SQL*Plus, et est remplacée intégralement dans le bloc L’utilisation d’une variable de substitution : Instructions Commentaires SET SERVEROUTPUT ON ACCEPT s_nbr PROMPT ‘Saisir un entier’; DECLARE v_doub NUMBER; BEGIN v_doub := &s_nbr; DBMS_OUTPUT.PUT_LINE(‘Le résultat est ‘||v_doub); END; Nécessaire à l’affichage Saisie de la variable de session s_nbr Manipulation de la variable (ajout du &) Affichage de la variable PL/SQL v_doub
  • 23. Les opérateurs et les fonctions Les opérateurs Arithmétiques + , - , * , / Logiques AND , OR, NOT Concaténation || Comparaison = , != , < , > , <= , >= , LIKE , BETWEEN , IS NULL , IN Les fonctions Disponibles dans les instructions PL/SQL Toutes les fonctions de ligne (lower, substr, length, round, add_months etc.)
  • 24. Les blocs imbriqués Blocs PL/SQL DECLARE var1 BEGIN … DECLARE var2 BEGIN … DECLARE var3 BEGIN … END; END; … END; Portée de var3 Portée de var2 Portée de var1