Académique Documents
Professionnel Documents
Culture Documents
PLSQL CH1 Les Blocs Anonymes
PLSQL CH1 Les Blocs Anonymes
PL / SQL
Les blocs anonymes
Ines BAKLOUTI
ines.baklouti@esprit.tn
Plan
2/27
Introduction
Modèles de programmes en PL/SQL
Structure d’un bloc PL/SQL
Introduction
Définition: PL/SQL
3/27
Introduction
Modèles de programmes en PL/SQL
Structure d’un bloc PL/SQL
Plan
4/27
Introduction
Modèles de programmes en PL/SQL
Structure d’un bloc PL/SQL
5/27
Introduction
La section déclaration
Modèles de programmes en PL/SQL
La section exécutable
Structure d’un bloc PL/SQL
Plan
6/27
Introduction
La section déclaration
Modèles de programmes en PL/SQL
La section exécutable
Structure d’un bloc PL/SQL
7/27
Introduction
La section déclaration
Modèles de programmes en PL/SQL
La section exécutable
Structure d’un bloc PL/SQL
Exemple
DECLARE
v last name varchar(20);
BEGIN
Select last name into v last name from employees where
employee id=124;
END ;
/
8/27
Introduction
La section déclaration
Modèles de programmes en PL/SQL
La section exécutable
Structure d’un bloc PL/SQL
La section déclaration
Exemple
No Produit Number ;
Désignation VARCHAR2(20) ;
PU NUMBER(6,2) := 100.00;
9/27
Introduction
La section déclaration
Modèles de programmes en PL/SQL
La section exécutable
Structure d’un bloc PL/SQL
10/27
Introduction
La section déclaration
Modèles de programmes en PL/SQL
La section exécutable
Structure d’un bloc PL/SQL
Exemples
DECLARE
v remise CONSTANT real := 0.10;
v hiredate date;
g deptno number(2) NOT NULL := 10;
v integer integer; – max 38chiffres
v number1 number; – max 125 chiffres
v number2 number(38,3);
v bool boolean; – valeurs possibles TRUE, FALSE, NULL et NOT NULL
v char char(5); – Max 32767 caractères
v varchar2 varchar2(20); – Max 32767 caractères
v long LONG; – Max 2147483647 caractères
v date date; – Les dates peuvent aller de -4712 avant AVJC à 9999 APJC
v last name employees.last name%type;
v employee employees%rowtype
v n1 number(5,3);
v n2 v n1%type;
11/27
Introduction
La section déclaration
Modèles de programmes en PL/SQL
La section exécutable
Structure d’un bloc PL/SQL
Le type RECORD
Les enregistrements PL/SQL sont des types composites définis par l’utilisateur. Pour les
utiliser il faut:
déclarer l’enregistrement dans la section déclarative d’un bloc PL/SQL en utilisant le
mot clé TYPE
déclarer et éventuellement initialiser les composants internes de ce type
d’enregistrement
Exemple
TYPE emp record type IS RECORD
(last name VARCHAR2(25),
job id VARCHAR2(10),
salary employees.salary%type);
Deux variables peuvent porter le même nom si elles sont dans des
blocs distincts
Les noms des variables doivent être différents des noms des colonnes
et des tables utilisés dans le bloc
L’identifiant ne doit pas dépasser 30 caractères
Le premier caractère doit être une lettre, les autres peuvent être des
lettres, des nombres ou des caractères spéciaux.
13/27
Introduction
La section déclaration
Modèles de programmes en PL/SQL
La section exécutable
Structure d’un bloc PL/SQL
Exemples
DECLARE
v integer integer := 12345;
v bool Boolean :=TRUE;
v char varchar(30) NOT NULL := ’SGBD’;
v date date DEFAULT ’01-Janv.-2009’;
V constant CONSTANT:=10;
14/27
Introduction
La section déclaration
Modèles de programmes en PL/SQL
La section exécutable
Structure d’un bloc PL/SQL
Exemples
BEGIN
v integer := 12345;
v number1 := 1234567.453;
v number2 := 1.9999E+15;
v bool :=TRUE;
v char := ’SGBD’;
v long := ’Cours PL/SQL’;
v date := ’21-févr.-2008’;
END;
15/27
Introduction
La section déclaration
Modèles de programmes en PL/SQL
La section exécutable
Structure d’un bloc PL/SQL
La section exécutable
17/27
Introduction
La section déclaration
Modèles de programmes en PL/SQL
La section exécutable
Structure d’un bloc PL/SQL
Exemple 1
DECLARE
v1 integer := 1100;
v2 integer := 200;
BEGIN
IF v1 < v2 THEN
dbms output.put line(’v1 < v2’);
ELSE
dbms output.put line(’v2 <= v1’);
END IF;
END;
/
19/27
Introduction
La section déclaration
Modèles de programmes en PL/SQL
La section exécutable
Structure d’un bloc PL/SQL
21/27
Introduction
La section déclaration
Modèles de programmes en PL/SQL
La section exécutable
Structure d’un bloc PL/SQL
Exemple 1
Exemple 2
DECLARE
DECLARE
v1 integer := 4;
v1 integer := 18;
BEGIN
BEGIN
CASE v1
CASE
WHEN 1 THEN
WHEN v1<5 THEN
dbms output.put line(’A’);
dbms output.put line(’A’);
WHEN 2 THEN
WHEN v1<10 THEN
dbms output.put line(’B’);
dbms output.put line(’B’);
WHEN 3 THEN
WHEN v1<15 THEN
dbms output.put line(’C’);
dbms output.put line(’C’);
ELSE
ELSE dbms output.put line(’X’);
dbms output.put line(’X’);
END CASE;
END CASE;
END;
END;
/
/
22/27
Introduction
La section déclaration
Modèles de programmes en PL/SQL
La section exécutable
Structure d’un bloc PL/SQL
Exemple
DECLARE
v1 integer :=1;
BEGIN
WHILE v1 <10 LOOP
dbms output.put line(v1);
v1 := v1+1;
END LOOP;
END;
/
23/27
Introduction
La section déclaration
Modèles de programmes en PL/SQL
La section exécutable
Structure d’un bloc PL/SQL
Exemple
DECLARE
v1 integer :=1;
BEGIN
LOOP
dbms output.put line(v1);
EXIT WHEN v1 =10;
v1 := v1+1;
END LOOP;
END;
/
24/27
Introduction
La section déclaration
Modèles de programmes en PL/SQL
La section exécutable
Structure d’un bloc PL/SQL
Exemple
DECLARE
v1 integer :=1;
BEGIN
FOR v1 IN 1..10 LOOP
dbms output.put line(v1);
END LOOP;
END;
/
25/27
Introduction
La section déclaration
Modèles de programmes en PL/SQL
La section exécutable
Structure d’un bloc PL/SQL
L’instruction SELECT
SELECT col1, col2, .., colN INTO v col1, v col2, .., v colN FROM nom table1, nom table2;
Exemple
DECLARE
salaire moy employees.salary%type;
BEGIN
Select avg(sal) into salaire moy From employees where department id=10;
dbms output.put line(’Le salaire moyen des employés du département 10 est : ’ ||
to char(salaire moy ,’99999.99’));
END ;
/
26/27
Introduction
La section déclaration
Modèles de programmes en PL/SQL
La section exécutable
Structure d’un bloc PL/SQL
L’instruction SELECT
Exemple
DECLARE
v emp employees%ROWTYPE;
BEGIN
Select * into v emp From employees where employee id = 124;
dbms output.put line(’Nom employé :’ || v emp.last name || chr(10)||
’Fonction : ’ || v emp.job id || chr(10)|| ’Departement : ’||
v emp.department id ||chr(10)|| ’Date recrutement : ’||
to char(v emp.hire date, ’dd/mm/yyyy’) || chr(10) || ’Salaire : ’ ||
v emp.salary );
END;
/
27/27