Vous êtes sur la page 1sur 22

Ecrire des instructions

excutables

Copyright Oracle Corporation, 2001. Tous droits rservs.


Objectifs

A la fin de ce chapitre, vous pourrez :


comprendre l'utilit de la section excutable
utiliser correctement les identificateurs
crire des instructions dans la section excutable
dcrire les rgles des blocs imbriqus
excuter et tester un bloc PL/SQL
utiliser des conventions de codage

2-2 Copyright Oracle Corporation, 2001. Tous droits rservs.


Syntaxe et remarques relatives
aux blocs PL/SQL

Les instructions peuvent s'tendre sur plusieurs


lignes
Les units lexicales se rpartissent en plusieurs
catgories :
dlimiteurs
identificateurs
littraux
commentaires

2-3 Copyright Oracle Corporation, 2001. Tous droits rservs.


Identificateurs

Peuvent contenir jusqu' 30 caractres


Doivent commencer par une valeur alphabtique
Peuvent contenir des valeurs numriques, des
traits de soulignement, ainsi que les signes dollar
et dise
Ne doivent pas contenir de caractres tels que les
traits d'union et les barres obliques, ni d'espaces
Ne doivent pas porter le mme nom qu'une
colonne de table de la base de donnes
Ne doivent pas correspondre des mots rservs

2-5 Copyright Oracle Corporation, 2001. Tous droits rservs.


Syntaxe et remarques relatives
aux blocs PL/SQL

Littraux
Les littraux de type caractre et date doivent tre
mis entre apostrophes.
v_name := 'Henderson';
Les nombres peuvent correspondre des valeurs
simples ou une notation scientifique.
Une barre oblique ( / ) permet d'excuter le bloc
PL/SQL dans un fichier script ou dans certains
outils tels que iSQL*PLUS.

2-6 Copyright Oracle Corporation, 2001. Tous droits rservs.


Commenter le code

Faire prcder les commentaires monolignes de


deux tirets (--)
Placer les commentaires multilignes entre les
symboles /* et */
Exemple :
DECLARE
...
v_sal NUMBER (9,2);
BEGIN
/* Compute the annual salary based on the
monthly salary input from the user */
v_sal := :g_monthly_sal * 12;
END; -- This is the end of the block

2-7 Copyright Oracle Corporation, 2001. Tous droits rservs.


Fonctions SQL en PL/SQL

Disponibles dans les instructions procdurales :


fonctions monolignes numriques
fonctions monolignes de




type caractre
fonctions de conversion de
type de donnes
fonctions de date
fonctions d'horodatage
fonctions GREATEST et LEAST
}
Identique en SQL

fonctions diverses
Non disponibles dans les instructions
procdurales :
fonction DECODE
fonctions de groupe

2-8 Copyright Oracle Corporation, 2001. Tous droits rservs.


Fonctions SQL en PL/SQL : exemples

Crer l'adresse postale d'une socit


v_mailing_address := v_name||CHR(10)||
v_address||CHR(10)||v_state||
CHR(10)||v_zip;

Convertir le nom d'un employ en minuscules


v_ename := LOWER(v_ename);

2-9 Copyright Oracle Corporation, 2001. Tous droits rservs.


Conversion de type de donnes

Convertir des donnes en types de donnes


comparables
Mlanger les types de donnes peut provoquer
des erreurs ou nuire aux performances
Fonctions de conversion :
TO_CHAR
TO_DATE
TO_NUMBER
DECLARE
v_date DATE := TO_DATE('12-JAN-2001', 'DD-MON-YYYY');
BEGIN
. . .

2-10 Copyright Oracle Corporation, 2001. Tous droits rservs.


Conversion de type de donnes

L'instruction suivante gnre une erreur de


compilation si la variable v_date est dclare en
tant que type de donnes DATE .
v_date := 'January 13, 2001';

2-11 Copyright Oracle Corporation, 2001. Tous droits rservs.


Conversion de type de donnes

Pour corriger cette erreur, il faut utiliser la fonction


de conversion TO_DATE .
v_date := TO_DATE ('January 13, 2001',
'Month DD, YYYY');

2-12 Copyright Oracle Corporation, 2001. Tous droits rservs.


Blocs imbriqus et porte des variables

Les blocs PL/SQL peuvent tre imbriqus partout


o une instruction excutable est permise
Un bloc imbriqu devient une instruction
Une section de traitement des exceptions peut
contenir des blocs imbriqus
La porte d'un identificateur correspond la
rgion d'un programme (bloc, sous-programme ou
package) partir de laquelle vous pouvez
rfrencer l'identificateur

2-13 Copyright Oracle Corporation, 2001. Tous droits rservs.


Blocs imbriqus et porte des variables

Exemple :

...
x BINARY_INTEGER;
BEGIN
... Porte de x
DECLARE
y NUMBER;
BEGIN
Porte de y
y:= x;
END;
...
END;

2-14 Copyright Oracle Corporation, 2001. Tous droits rservs.


Porte de l'identificateur

Un identificateur est visible dans les rgions partir


desquelles vous pouvez le rfrencer sans devoir le
qualifier :
un bloc peut effectuer une recherche dans le bloc
englobant
un bloc ne peut pas effectuer de recherche dans
les blocs qu'il englobe

2-15 Copyright Oracle Corporation, 2001. Tous droits rservs.


Qualifier un identificateur
Le qualificatif peut correspondre l'tiquette d'un
bloc englobant
Qualifier un identificateur en utilisant l'tiquette du
bloc en tant que prfixe
<<outer>>
DECLARE
birthdate DATE;
BEGIN
DECLARE
birthdate DATE;
BEGIN
...
outer.birthdate :=
TO_DATE('03-AUG-1976',
'DD-MON-YYYY');
END;
....
END;

2-16 Copyright Oracle Corporation, 2001. Tous droits rservs.


Dterminer la porte d'une variable
Exercice
<<outer>>
DECLARE
v_sal NUMBER(7,2) := 60000;
v_comm NUMBER(7,2) := v_sal * 0.20;
v_message VARCHAR2(255) := ' eligible for commission';
BEGIN
DECLARE
v_sal NUMBER(7,2) := 50000;
v_comm NUMBER(7,2) := 0;
v_total_comp NUMBER(7,2) := v_sal + v_comm;
BEGIN
v_message := 'CLERK not'||v_message;
outer.v_comm := v_sal * 0.30;
1
END;
v_message := 'SALESMAN'||v_message;
2
END;

2-17 Copyright Oracle Corporation, 2001. Tous droits rservs.


Oprateurs en PL/SQL

Oprateur logique
Oprateur arithmtique
Oprateur de concatnation
Parenthses permettant de
contrler l'ordre des oprations
} Identiques
en SQL

Oprateur exponentiel (**)

2-18 Copyright Oracle Corporation, 2001. Tous droits rservs.


Oprateurs en PL/SQL

Exemples :
Incrmenter le compteur d'une boucle.
v_count := v_count + 1;

Dfinir la valeur d'un indicateur boolen.


v_equal := (v_n1 = v_n2);

Vrifier si un numro d'employ contient une


valeur.
v_valid := (v_empno IS NOT NULL);

2-19 Copyright Oracle Corporation, 2001. Tous droits rservs.


Remarques relatives la programmation

Faciliter la maintenance du code en :


commentant le code
dveloppant une convention d'utilisation des
majuscules et des minuscules
dveloppant des conventions d'appellation pour
les identificateurs et les autres objets
ralisant des indentations pour amliorer la clart

2-20 Copyright Oracle Corporation, 2001. Tous droits rservs.


Indenter le code

Pour plus de clart, indenter chaque niveau du code


Exemple :
DECLARE
v_deptno NUMBER(4);
BEGIN v_location_id NUMBER(4);
IF x=0 THEN BEGIN
y:=1; SELECT department_id,
END IF; location_id
END; INTO v_deptno,
v_location_id
FROM departments
WHERE department_name
= 'Sales';
...
END;
/

2-21 Copyright Oracle Corporation, 2001. Tous droits rservs.


Synthse

Ce chapitre vous a appris les rgles suivantes :


syntaxe et remarques relatives aux blocs PL/SQL
utilisation correcte des identificateurs
structure des blocs PL/SQL : imbrication des
blocs et rgles de porte


programmation en PL/SQL : DECLARE
fonctions
fonctions de conversion de type de donnes
BEGIN



oprateurs
conventions et remarques

EXCEPTION

END;

2-22 Copyright Oracle Corporation, 2001. Tous droits rservs.


Prsentation de l'exercice 2

Dans cet exercice, vous allez :


revoir les rgles de porte et d'imbrication
dvelopper et tester des blocs PL/SQL

2-23 Copyright Oracle Corporation, 2001. Tous droits rservs.

Vous aimerez peut-être aussi