0% ont trouvé ce document utile (0 vote)
98 vues27 pages

PLSQL - Part1

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1/ 27

PL/SQL

Abir GORRAB
[email protected]
Plan du cours

Introduction

Structure d’un programme

Les variables

Interactions simples avec une Base de données

PL/SQL 2
Introduction
SQL est un langage non procédural

Les traitements complexes sont parfois difficiles à écrire si on ne


peut pas utiliser des variables et les structures de programmation
comme les boucles

On ressent vite le besoin d’un langage procédural pour lier plusieurs


requêtes SQL avec des variables et dans les structures de
programmation habituelles (les boucles et les alternatives)

PL/SQL 3
Introduction

Extension de SQL :des requêtes SQL cohabitent avec les


structures de contrôle habituelles de la programmation
structurée (blocs, alternatives,boucles)

Des variables permettent l’échange d’information entre les


requêtes SQL et le reste du programme

Un programme est constitué de procédures et de fonctions

PL/SQL 4
Introduction
Supposons que nous voulons accorder
un bonus à chaque employé en fonction
des heures effectuées sur un projet.

- Le problème serait simplifié si vous


disposiez d'instructions conditionnelles.

 Le langage PL/SQL est conçu pour faire


face à ces besoins

PL/SQL 5
Structure d’un programme

Le langage PL/SQL :

- Fournit des structures procédurales telles que :

○ Variables, constantes et types

○ Structures de contrôle, telles que les instructions


conditionnelles et les boucles

○ Programmes réutilisables écrits une fois et


exécutés plusieurs fois

PL/SQL 6
Structure d’un programme

Blocs

Un programme est structuré en blocs d’instructions

Un bloc peut contenir d’autres blocs

PL/SQL 7
Structure d’un programme
Structure d’un bloc

DECLARE
-- définitions de variables
BEGIN
-- Les instructions à exécuter
EXCEPTION
-- La récupération des erreurs
END;

PL/SQL 8
Structure d’un programme
Les seuls ordres SQL que l’on peut trouver dans un
bloc PL/SQL sont:
SELECT, INSERT, UPDATE, DELETE.

Les autres types d’instructions (par exemple


CREATE,DROP, ALTER) ne peuvent se trouver qu’a
l’extérieur d’un tel bloc.

 LMD: autorisé à l’intérieur du bloc


 LDD: non autorisé à l’intérieur du bloc

PL/SQL 9
Commentaires

-- pour une fin de ligne

/* pour plusieurs
lignes */

PL/SQL 10
Les variables

PL/SQL
Variables
Identificateur Oracle(nom
de la variable):
- 30 caractères au plus
- Commence par une lettre
- Peut contenir chiffres, lettres, _, $ et#

Pas sensibles à la casse

Doivent être déclarées avant d’être utilisées

PL/SQL 12
Variables
Plusieurs types de variables sont manipulés par
un programme PL/SQL :

○ Variables PL/SQL :
Types scalaires recevant une seule valeur :
INTEGER, REAL, DATE, BOOLEAN + %TYPE

+ types SQL (Tous les types SQL sont utilisables en


PL/SQL: VARCHAR, NUMBER,…)

Types composites (%ROWTYPE, RECORD)

○ Variables non PL/SQL :


définies sous SQL*Plus (de substitution et globales),

PL/SQL 13
Exemples
Declare
age integer;
nom varchar2(30);
dateNaissance date;
ok boolean := true;

N.B: Le type BOOLEAN ne peut prendre que l’une des valeurs TRUE, FALSE,
ou NULL ( pas de 0 ou 1).

declare
date_naissance DATE := ‘DD/MM/YYYY’;
compteur integer default 0;
id char(5) not null ;

PL/SQL 14
Déclaration d’une variable
identifiant [CONSTANT] datatype [NOT NULL] [:= | DEFAULT expr];

Declare
v_hiredate DATE;
v_deptno NUMBER(2) NOT NULL := 10;
v_location VARCHAR2(13) := 'Atlanta';
c_comm CONSTANT NUMBER := 1400;

Déclarations multiples interdites :


i, j integer;

N.B. Une variable déclarée non nulle doit avoir impérativement une valeur
par défaut.
PL/SQL 15
Variables: L’attribut %TYPE
Déclarer une variable à partir de :
la définition d’une colonne de la base de données
la définition d’une variable précédemment déclarée
Préfixer %TYPE avec :
La table et la colonne de la base
Le nom de la variable précédemment déclarée

...
v_ename emp.ename%TYPE;
v_balance NUMBER(7,2);
v_min_balance v_balance%TYPE := 10;
...

PL/SQL 16
Variables: L’attribut %ROWTYPE
Une variable peut contenir toutes les colonnes d’une
ligne d’une table
...
employe emp%ROWTYPE;
...

déclare que la variable employe contiendra une ligne de la


table emp

PL/SQL 17
AFFICHAGE
Une alternative pour l’affichage de données à partir d’un
bloc PL/SQL
DBMS_OUTPUT.PUT_LINE
dbms_output.put_line('nb = ' || nb);

Doit être autorisée sous SQL*Plus à l’aide de :


SET SERVEROUTPUT O N

Applications

Déclarer une variable contenant la chaine ‘OK’ et l’afficher au clavier

PL/SQL 18
Variables: L’attribut %ROWTYPE
Exemple
Soit la table:
MALADE (numMal, nom_mal, prenom_mal, age_mal,
adr_mal)

Créer le type un_malade composé d’un


enregistrement de la table MALADE et dont tous
les composants sont de même type que la
table MALADE.

Attibuer une valeur quelconque à chaque composant.


○ Insérer le malade créé au niveau de la table
MALADE puis le visualiser.

PL/SQL 19
Affectation
Plusieurs façons de donner une valeur à une variable :
:=
par la directive default
par la directive INTO de la requête SELECT

Exemples :
dateNaissance := ‘10/10/2004’;

SELECT nome INTO nom


FROM emp
WHERE matr = 509;

PL/SQL 20
Interactions avec la base de données

Select expr1, expr2,… into var1, var2,… met des valeurs de la BD


dans une ou plusieurs variables

Le select ne doit renvoyer qu’une seule ligne

Avec Oracle il n’est pas possible d’inclure un select sans « into » ;

PL/SQL 21
Exemple

DECLARE
v_nom emp.nome%TYPE;
v_emp emp%ROWTYPE;
BEGIN
SELECT nome INTO v_nom
FROM emp
WHERE matr = 500;
SELECT * INTO v_emp
FROM emp
WHERE matr = 500;

PL/SQL 22
Saisie des données

Pour saisir des données au clavier:

Accept

Accept nom_variable PROMPT ‘Saisir variable : ‘;

PL/SQL 23
Variables non PL/SQL

Variables de substitution

Il est possible de passer en paramètres d’entrée


d’un bloc PL/SQL des variables définies sous
SQL*Plus.

On accède aux valeurs d’une telle variable dans le code


PL/SQL en faisant préfixer le nom de la
variable du symbole « & » (avec ou sans guillemets
simples suivant qu’il s’agit d’un nombre ou pas).

PL/SQL 24
Variables non pl/sql

Exemple
Ecrire un programme qui permet de demander la saisie d’un numéro
puis de l’afficher.

PL/SQL 25
Variables non pl/sql

set serveroutput on
Accept numero PROMPT ‘Entrez une valeur’;
Begin
DBMS_output.put_line(‘la valeur est ‘||&numero);
End;

PL/SQL 26
Exercices

HOPITAL (numHopital, nom_hopital, region)

Ecrire un programme PL/SQL qui permet d’afficher les données d’un


hopital dont le numéro est saisi par l’utilisateur.

CONSULTATION (numMed#, numMal#, prescription, date,


examen)

Ecrire un programme PL/SQL qui permet d’afficher les informations


d’une consultation: la prescription, la date et l’examen pour un
numéro de médecin et un numéro de malade saisis au clavier.

PL/SQL 27

Vous aimerez peut-être aussi