Modèles et structure des blocs PL/SQL pour Oracle

Page 1 sur 27Lecteur de document UniversityLib

Modèles et structure des blocs PL/SQL pour Oracle

Programming, Math, etc. · textbook

Voir tous les documents en bases de données

Introduction

Modèles de programmes en PL/SQL

Structure d’un bloc PL/SQL

PL / SQL

Les blocs anonymes

Ines BAKLOUTI

[email protected]

Ecole Supérieure Privée d’Ingénierie et de Technologies

Introduction

Modèles de programmes en PL/SQL

Structure d’un bloc PL/SQL

Plan

1 Modèles de programmes en PL/SQL

2 Structure d’un bloc PL/SQL

La section déclaration

La section exécutable

2/27

Introduction

Modèles de programmes en PL/SQL

Structure d’un bloc PL/SQL

Introduction

Rappel: le language SQL

SQL: Structured Query Language

LID: un langage d’interrogation de la base (ordre SELECT)

LDD: un langage de définition des données (ordres CREATE,

ALTER, DROP),

LMD: un langage de manipulation des données (ordres INSERT,

UPDATE, DELETE).

Définition: PL/SQL

Le langage PL/SQL est une extension procédurale du langage SQL

(propre à oracle).

3/27

Introduction

Modèles de programmes en PL/SQL

Structure d’un bloc PL/SQL

Plan

1 Modèles de programmes en PL/SQL

2 Structure d’un bloc PL/SQL

La section déclaration

La section exécutable

4/27

Introduction

Modèles de programmes en PL/SQL

Structure d’un bloc PL/SQL

Modèles de programmes en PL/SQL

Parmi les modèles de programme PL/SQL on trouve:

Les blocs anonymes,

Les sous programmes (procédures et fonctions),

Les procédures et les fonctions stockées,

Les triggers,

Les packages,

. . .

Les programmes écrits en PL/SQL respectent tous une structure en

blocs prédéterminés.

5/27

Introduction

Modèles de programmes en PL/SQL

Structure d’un bloc PL/SQL

La section déclaration

La section exécutable

Plan

1 Modèles de programmes en PL/SQL

2 Structure d’un bloc PL/SQL

La section déclaration

La section exécutable

6/27

Introduction

Modèles de programmes en PL/SQL

Structure d’un bloc PL/SQL

La section déclaration

La section exécutable

Structure d’un bloc PL/SQL

7/27

Introduction

Modèles de programmes en PL/SQL

Structure d’un bloc PL/SQL

La section déclaration

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 ;

/

Chaque instruction SQL ou PL/SQL doit se terminer par un point

virgule (;)

Le slash (/) pour exécuter un bloc PL/SQL anonyme

8/27

Introduction

Modèles de programmes en PL/SQL

Structure d’un bloc PL/SQL

La section déclaration

La section exécutable

La section déclaration

Débute par le mot DECLARE et permet la déclaration des variables

et constantes.

Exemple

No Produit Number ;

Désignation VARCHAR2(20) ;

PU NUMBER(6,2) := 100.00;

9/27

Introduction

Modèles de programmes en PL/SQL

Structure d’un bloc PL/SQL

La section déclaration

La section exécutable

Les variables PL/SQL

INTEGER – max 38chiffres

NUMBER – max 125 chiffres

BINARY INTEGER : -2147483647 - +2147483647

NATURAL :0 - 2147483647

POSITIVE : 1 - 2147483647

CHAR; – Max 32767 caractères

VARCHAR2; – Max 32767 caractères

LONG; – Max 2147483647 caractères

DATE; – 4712 avant AVJC à 9999 APJC

BOOLEAN :TRUE, FALSE, NULL, NOT NULL

%TYPE : type de variable équivalent au type de colonne d’une table ou

d’une autre variable

%ROWTYPE : type de variable équivalent à une ligne d’une table

10/27

Introduction

Modèles de programmes en PL/SQL

Structure d’un bloc PL/SQL

Publicité

La section déclaration

La section exécutable

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

Modèles de programmes en PL/SQL

Structure d’un bloc PL/SQL

La section déclaration

La section exécutable

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

Déclaration d’un type record

TYPE record name IS RECORD

(field 1 [, field 2, ... field N]. . . );

new record record name;

Exemple

TYPE emp record type IS RECORD

(last name VARCHAR2(25),

job id VARCHAR2(10),

salary employees.salary%type);

emp record emp record type;

12/27

Introduction

Modèles de programmes en PL/SQL

Structure d’un bloc PL/SQL

La section déclaration

La section exécutable

Règles de nommination des variables

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

Modèles de programmes en PL/SQL

Structure d’un bloc PL/SQL

La section déclaration

La section exécutable

Déclaration et initialisation des variables

Les variables sont déclarées et initialisées dans la section déclarative

Initialisation à l’aide de l’opérateur d’affectation (:=) ou du mot réservé DEFAULT

Déclarer un seul identifiant par ligne

Déclarer une constante en utilisant le mot clé CONSTANT

Initialisation des variables si on a:

Mot clé DEFAULT

Contrainte NOT NULL

Constante

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

Modèles de programmes en PL/SQL

Structure d’un bloc PL/SQL

La section déclaration

La section exécutable

Affectation de valeurs aux variables

De nouvelles valeurs sont affectées aux variables dans la section

exécutable (BEGIN .. END)

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

Modèles de programmes en PL/SQL

Structure d’un bloc PL/SQL

La section déclaration

La section exécutable

La portée des variables

DECLARE

v1 integer := 100;

v2 varchar(5) :=’A’;

BEGIN

DECLARE

v1 integer;

v3 varchar2(10):=v2||’1’;

v4 varchar2(10):=’B’;

BEGIN

dbms output.put line(’v1(1) =’ || v1 || chr(10) ||

’v2(1) =’ || v2 || chr(10) || ’v3(1) =’ || v3);

END;

dbms output.put line(’v1(2) =’ || v1 || chr(10) || ’v2(2) =’ || v2);

dbms output.put line(’v3(2) =’ || v3);

END;

/

16/27

Introduction

Modèles de programmes en PL/SQL

Structure d’un bloc PL/SQL

La section déclaration

La section exécutable

La section exécutable

Publicité

Intègre différents types d’instructions:

Instruction d’affectation

Instruction de contrôle de flux (boucles, structures de

contrôle)

Instruction SQL

Instruction curseur

17/27

Introduction

Modèles de programmes en PL/SQL

Structure d’un bloc PL/SQL

La section déclaration

La section exécutable

Les structures de contrôle

IF .. THEN .. END IF

IF condition THEN

– Instructions

END IF;

IF .. THEN .. ELSE .. END IF

IF condition THEN

– Instructions

ELSE

– Instructions

END IF;

IF .. THEN .. ELSEIF .. THEN .. ELSE .. END IF

IF condition THEN

– Instructions

ELSIF condition2 THEN

– Instructions

ELSE

– Instructions

END IF;

18/27

Introduction

Modèles de programmes en PL/SQL

Structure d’un bloc PL/SQL

La section déclaration

La section exécutable

Les structures de contrôle

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

Modèles de programmes en PL/SQL

Structure d’un bloc PL/SQL

La section déclaration

La section exécutable

Les structures de contrôle

Exemple 2

DECLARE

v1 number:= 685;

v2 number := 125;

v3 number :=870;

BEGIN

IF v1 < v2 THEN

IF v2<v3 then

dbms output.put line(’v1 < v2 < v3’);

ELSIF v3 < v1 then

dbms output.put line(’v3 < v1 < v2’);

ELSE

dbms output.put line(’v1 <=v3 <v2’);

END IF;

ELSIF v1 < v3 then

dbms output.put line(’v2 < v1 < v3’);

ELSIF v3<v2 then

dbms output.put line(’v3 < v2 <= v1’);

ELSE

dbms output.put line(’v2 <= v3 <= v1’);

END IF;

END;

/

20/27

Introduction

Modèles de programmes en PL/SQL

Structure d’un bloc PL/SQL

La section déclaration

La section exécutable

Les structures de contrôle

CASE expression

CASE expression

WHEN valeur1 THEN

–instructions1;

WHEN valeur2 THEN

–instructions2;

. . .

ELSE

–instructionsN;

END CASE;

CASE

CASE

WHEN expr1 THEN

–instructions1;

WHEN expr2 THEN

–instructions2;

. . .

ELSE

–instructionsN;

END CASE;

21/27

Introduction

Modèles de programmes en PL/SQL

Structure d’un bloc PL/SQL

La section déclaration

La section exécutable

Les structures de contrôle

Exemple 1

DECLARE

v1 integer := 4;

BEGIN

CASE v1

WHEN 1 THEN

dbms output.put line(’A’);

WHEN 2 THEN

dbms output.put line(’B’);

WHEN 3 THEN

dbms output.put line(’C’);

ELSE

dbms output.put line(’X’);

Publicité

END CASE;

END;

/

Exemple 2

DECLARE

v1 integer := 18;

BEGIN

CASE

WHEN v1<5 THEN

dbms output.put line(’A’);

WHEN v1<10 THEN

dbms output.put line(’B’);

WHEN v1<15 THEN

dbms output.put line(’C’);

ELSE dbms output.put line(’X’);

END CASE;

END;

/

22/27

Introduction

Modèles de programmes en PL/SQL

Structure d’un bloc PL/SQL

La section déclaration

La section exécutable

Les structures de contrôle

WHILE .. LOOP .. END LOOP

WHILE condition LOOP

–instructions;

END LOOP;

Exemple

DECLARE

v1 integer :=1;

BEGIN

WHILE v1 <10 LOOP

dbms output.put line(v1);

v1 := v1+1;

END LOOP;

END;

/

23/27

Introduction

Modèles de programmes en PL/SQL

Structure d’un bloc PL/SQL

La section déclaration

La section exécutable

Les structures de contrôle

LOOP .. EXIT WHEN .. END LOOP

LOOP

–instructions;

EXIT WHEN condition

–instructions;

END LOOP;

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

Modèles de programmes en PL/SQL

Structure d’un bloc PL/SQL

La section déclaration

La section exécutable

Les structures de contrôle

FOR .. IN .. LOOP .. END LOOP

FOR compteur IN [REVERSE] inf .. sup LOOP

–instructions;

END LOOP;

Exemple

DECLARE

v1 integer :=1;

BEGIN

FOR v1 IN 1..10 LOOP

dbms output.put line(v1);

END LOOP;

END;

/

25/27

Introduction

Modèles de programmes en PL/SQL

Structure d’un bloc PL/SQL

La section déclaration

La section exécutable

L’instruction SELECT

SELECT col1, col2, .., colN INTO v col1, v col2, .., v colN FROM nom table1, nom table2;

Utilisation de la clause INTO pour identifier les variables PL/SQL

qui doivent recevoir des valeurs des colonnes des tables d’une base

de données

La requête select doit retourner une seule ligne

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

Modèles de programmes en PL/SQL

Structure d’un bloc PL/SQL

La section déclaration

La section exécutable

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