Vous êtes sur la page 1sur 27

Cours 1 : Le langage PL/SQL

 PL/SQL = Procedural Language /SQL

 SQL est un langage déclarative / non procédural.


 Pour automatiser son travail, l’administrateur a besoins
des boucles for/While et des if et des case.

 Besoin d’un langage procédural qui inclus SQL à


l’intérieur en ajoutant des variables et des
boucles : PL/SQL.
 PL/SQL :
 Extension de SQL.
 Un programme en langage impératif de style
C avec des procédures et des fonctions.
 Des variables permettent l’échange
d’informations entre les requêtes SQL et le
reste du programme.
 Chaque programme est un bloc (BEGIN – END).
 Programmation adaptée pour une architecture
Client - Serveur.
CLIENT SERVEUR

BEGIN
INSERT … Exécution
SI ….
ALORS du bloc
SELECT …
FSI
PL/SQL
END; Résultat
 Un programme est structuré en blocs d’instructions
de 3 types :
 Procédures ou blocs anonymes.
 Procédures nommées.
 Fonctions nommées.

 Un bloc peur contenir d’autres blocs.


ENTETE DU BLOC optionnelle

DECLARE optionnelle
Variables, ...
BEGIN obligatoire
Instructions SQL et PL/SQL
Possibilités de blocs fils (imbrication de blocs)
EXCEPTION optionnelle
Traitement des exceptions (gestion des erreurs)
END ; obligatoire

/
 Identificateur Oracle :
 30 caractères au plus.
 Commence par une lettre .
 Peut contenir des lettres, _, $ et #.
 Pas sensible à la casse.

 Toute variable doit être déclarée avant d’être


utilisée.
Syntaxe:
Identificateur [CONSTANT] type_données [NOT NULL] [:= expression];

 Variables de type SQL :


nbr NUMBER(2) ;
nom VARCHAR(30) ;
minimum CONSTANT INTEGER := 5 ;
salaire NUMBER(8,2) ;
debut NUMBER NOT NULL := 5.2 ;

 Variables de type booléen (TRUE, FALSE, NULL)

fin BOOLEAN ;
ok BOOLEAN := TRUE;
 Opérateur :=.
 Directive INTO de la requête SELECT.
 NB : Le SELECT ne doit retourner qu’une seule ligne.
 Pour retourner plusieurs lignes, voir la suite du cours sur les
curseurs.
Exemples :
1. v_date := ’9-SEP-2022’;
2. SELECT nom INTO v_nom
FROM emp
WHERE matr=233;
 Déclarer une variable à partir :
 d'une autre variable déclarée précédemment.
 de la définition d'une colonne de la base de
données .
 Préfixer %TYPE avec :
 la table et la colonne de la base de données.
 le nom de la variable déclarée précédemment .
Exemple :
Une variable peut contenir toute une ligne d’une table :

PL/SQL permet de déclarer une variable de même structure qu’une


ligne d’une table en utilisant le type générique

%ROWTYPE :

Syntaxe: nom_variable nom_table %ROWTYPE

Exemples:

v_employe est une variable de même type qu'une ligne de la table employe :
v_employe employe %ROWTYPE;

La variable v_employe contiendra une ligne de la table employe


 Types composés
1. Les enregistrements
 RECORD
2. Les tableaux
 ARRAY
 TABLE
 La déclaration se fait en deux étapes :

1. Déclaration du type enregistrement :


Syntaxe: TYPE nom-type IS RECORD ( champ1 type1,
champ2 type2, …);
2. Déclaration d’une variable du type enregistrement :
Syntaxe: nom_variable nom-type ;
Exemple:
TYPE emp_ligne IS RECORD (
matricule integer,
nom varchar(30)
);
v_employe emp_ligne;
v_employe.matricule := 500 ; …
 La déclaration se fait en deux étapes :

1. Déclaration d’ un type tableau de taille fixe: ARRAY :

Syntaxe: TYPE nom-type IS ARRAY ( taille) of

nomTypeElt [NOT NULL];

2. Déclaration d’une variable du type tableau de taille fixe:

ARRAY :

Syntaxe: nom_variable nom-type ;


 La déclaration se fait en deux étapes :

1. Déclaration du type table:


Syntaxe: TYPE nom-type IS TABLE OF type-argument
INDEX BY {PLS_INTEGER | BINARY_INTEGER |
VARCHAR2(taille)};
2. Déclaration d’une variable du type table :
Syntaxe: nom_variable nom-type ;
Exemple:

TYPE tabNom IS TABLE OF VARCHAR2(20)


INDEX BY BINARY_INTEGER;
tableNom tabNom;
 Les méthodes associées aux tableaux de taille variable

 EXISTS(n) : Revoie vrai si l’élément d’indice n existe.


 COUNT : Renvoie le nombre d’éléments du tableau.
 FIRST / LAST Renvoie le premier ou le dernier
élément du tableau.
 PRIOR(n) / NEXT(n) Retourne l’élément précédent ou
suivant l’élément d’indice
 DELETE(n) Supprime l’élément d’indice n.
 DELETE Supprime l’élément de l’indice en cours.
 DELETE(a,b) Supprime les éléments d’indice a et b.

Vous aimerez peut-être aussi