Vous êtes sur la page 1sur 31

Dclarer des variables

Copyright Oracle Corporation, 2001. Tous droits rservs.

Objectifs

A la fin de ce chapitre, vous pourrez :

reconnatre un bloc PL/SQL de base et ses diffrentes sections dcrire la signification des variables en PL/SQL dclarer des variables PL/SQL excuter un bloc PL/SQL

1-2

Copyright Oracle Corporation, 2001. Tous droits rservs.

Structure d'un bloc PL/SQL


DECLARE (facultatif)
Variables, curseurs, exceptions dfinies par l'utilisateur

BEGIN (obligatoire)

Instructions SQL Instructions PL/SQL


EXCEPTION (facultatif)
Actions raliser lorsque des erreurs se produisent

END; (obligatoire)

BEGIN EXCEPTION
DECLARE

END;

1-3

Copyright Oracle Corporation, 2001. Tous droits rservs.

Excuter des instructions et des blocs PL/SQL


DECLARE v_variable VARCHAR2(5); BEGIN SELECT column_name INTO v_variable FROM table_name; EXCEPTION WHEN exception_name THEN ... END;

BEGIN EXCEPTION
DECLARE END;
1-4 Copyright Oracle Corporation, 2001. Tous droits rservs.

Types de bloc

Anonyme
[DECLARE]

Procdure
PROCEDURE name IS BEGIN --statements [EXCEPTION] END;

Fonction
FUNCTION name RETURN datatype IS BEGIN --statements RETURN value; [EXCEPTION] END;

BEGIN --statements [EXCEPTION] END;

1-5

Copyright Oracle Corporation, 2001. Tous droits rservs.

Structures de programme

BEGIN EXCEPTION
DECLARE

END;

Structures des outils


Blocs anonymes Procdures ou fonctions applicatives Packages applicatifs Dclencheurs applicatifs Types d'objet

Structures du serveur de bases de donnes


Blocs anonymes Procdures ou fonctions stockes Packages stocks Dclencheurs de base de donnes Types d'objet

1-6

Copyright Oracle Corporation, 2001. Tous droits rservs.

Utiliser des variables

Les variables peuvent tre utilises pour les raisons suivantes :

stockage temporaire de donnes


manipulation de valeurs stockes possibilit de rutilisation

facilit de maintenance

1-7

Copyright Oracle Corporation, 2001. Tous droits rservs.

Traiter les variables en PL/SQL


Dclarer et initialiser les variables dans la section dclarative Affecter de nouvelles valeurs aux variables dans la section excutable Transmettre des valeurs aux blocs PL/SQL via des paramtres Afficher les rsultats via des variables de sortie

1-8

Copyright Oracle Corporation, 2001. Tous droits rservs.

Types de variable

Variables PL/SQL :
scalaires

composites
rfrences

LOB (Large Object)

Variables non PL/SQL : variables attaches et variables hte

1-9

Copyright Oracle Corporation, 2001. Tous droits rservs.

Utiliser des variables iSQL*Plus dans des blocs PL/SQL


Le langage PL/SQL ne permet pas les entres/sorties
Vous pouvez rfrencer des variables de substitution dans un bloc PL/SQL en les faisant prcder d'un signe esperluette Les variables attaches ou variables hte iSQL*Plus peuvent tre utilises pour transmettre des valeurs d'excution du bloc PL/SQL vers l'environnement iSQL*Plus

1-10

Copyright Oracle Corporation, 2001. Tous droits rservs.

Types de variable

TRUE
256120.08

25-JAN-01
Four score and seven years ago our fathers brought forth upon this continent, a new nation, conceived in LIBERTY, and dedicated to the proposition that all men are created equal.

Atlanta
1-11 Copyright Oracle Corporation, 2001. Tous droits rservs.

Dclarer des variables PL/SQL

Syntaxe :
identifier [CONSTANT] datatype [NOT NULL] [:= | DEFAULT expr];

Exemples :
DECLARE v_hiredate v_deptno v_location c_comm

DATE; NUMBER(2) NOT NULL := 10; VARCHAR2(13) := 'Atlanta'; CONSTANT NUMBER := 1400;

1-12

Copyright Oracle Corporation, 2001. Tous droits rservs.

Rgles relatives la dclaration de variables PL/SQL



Suivre les conventions d'appellation Initialiser les variables NOT NULL et CONSTANT Dclarer un identificateur par ligne Initialiser les identificateurs en utilisant l'oprateur d'affectation (:=) ou le mot rserv DEFAULT
identifier := expr;

1-13

Copyright Oracle Corporation, 2001. Tous droits rservs.

Rgles d'appellation

Deux variables peuvent porter le mme nom si elles sont dans des blocs distincts Le nom de la variable (identificateur) doit tre diffrent du nom des colonnes de table utilises dans le bloc.

DECLARE employee_id BEGIN SELECT INTO FROM WHERE 'Kochhar'; END; /

NUMBER(6); employee_id employee_id employees last_name =

1-14

Copyright Oracle Corporation, 2001. Tous droits rservs.

Initialisation de variables et mots-cls

Oprateur d'affectation (:=) Mot-cl DEFAULT Contrainte NOT NULL


Syntaxe :
identifier := expr;

Exemples :
v_hiredate := '01-JAN-2001'; v_ename := 'Maduro';

1-15

Copyright Oracle Corporation, 2001. Tous droits rservs.

Types de donnes scalaires


Ils stockent une seule valeur Ils n'ont pas de composant interne

25-OCT-99

Four score and seven years ago our fathers brought

TRUE

forth upon this continent, a new nation, conceived in

256120.08

LIBERTY, and dedicated to the proposition that all men are created equal.

Atlanta

1-17

Copyright Oracle Corporation, 2001. Tous droits rservs.

Types de donnes scalaires de base


CHAR [(maximum_length)] VARCHAR2 (maximum_length) LONG LONG RAW NUMBER [(precision, scale)] BINARY_INTEGER PLS_INTEGER BOOLEAN

1-18

Copyright Oracle Corporation, 2001. Tous droits rservs.

Types de donnes scalaires de base


DATE TIMESTAMP TIMESTAMP WITH TIME ZONE TIMESTAMP WITH LOCAL TIME INTERVAL YEAR TO MONTH INTERVAL DAY TO SECOND

ZONE

1-20

Copyright Oracle Corporation, 2001. Tous droits rservs.

Dclaration de variables scalaires

Exemples :
DECLARE v_job v_count v_total_sal v_orderdate c_tax_rate v_valid ... VARCHAR2(9); BINARY_INTEGER := 0; NUMBER(9,2) := 0; DATE := SYSDATE + 7; CONSTANT NUMBER(3,2) := 8.25; BOOLEAN NOT NULL := TRUE;

1-22

Copyright Oracle Corporation, 2001. Tous droits rservs.

Attribut %TYPE

Dclarer une variable d'aprs :


une dfinition de colonne de base de donnes une autre variable prcdemment dclare de la table et de la colonne de base de donnes

Faire prcder %TYPE :


du nom de la variable prcdemment dclare

1-23

Copyright Oracle Corporation, 2001. Tous droits rservs.

Dclarer des variables avec l'attribut %TYPE


Syntaxe :
identifier Table.column_name%TYPE;

Exemples :
... v_name v_balance v_min_balance ... employees.last_name%TYPE; NUMBER(7,2); v_balance%TYPE := 10;

1-24

Copyright Oracle Corporation, 2001. Tous droits rservs.

Dclarer des variables boolennes

Seules les valeurs TRUE, FALSE et NULL peuvent tre affectes une variable boolenne
Les variables sont compares en utilisant les oprateurs logiques AND, OR et NOT

Les variables renvoient toujours TRUE, FALSE ou NULL


Des expressions de type arithmtique, caractre ou date peuvent tre utilises pour renvoyer une valeur boolenne.

1-25

Copyright Oracle Corporation, 2001. Tous droits rservs.

Types de donnes composites


TRUE 23-DEC-98 ATLANTA

Structure d'une table PL/SQ

Structure d'une table PL/SQL

1 2 3 4

SMITH JONES NANCY TIM


VARCHAR2 BINARY_INTEGER

1 2 3 4

5000 2345 12 3456


NUMBER BINARY_INTEGER

1-26

Copyright Oracle Corporation, 2001. Tous droits rservs.

Variables de type LOB


Book (CLOB) Photo (BLOB) Movie (BFILE) NCLOB

1-27

Copyright Oracle Corporation, 2001. Tous droits rservs.

Variables attaches

O/S Variable attache

Serveur

1-28

Copyright Oracle Corporation, 2001. Tous droits rservs.

Utiliser des variables attaches


En PL/SQL, pour rfrencer une variable attache, il faut faire prcder son nom du signe deux-points (:)
Exemple :
VARIABLE g_salary NUMBER BEGIN SELECT salary INTO :g_salary FROM employees WHERE employee_id = 178; END; / PRINT g_salary

1-30

Copyright Oracle Corporation, 2001. Tous droits rservs.

Rfrencer des variables non PL/SQL

Stocker le salaire annuel dans une variable hte iSQL*Plus.


:g_monthly_sal := v_sal / 12;

Rfrencer des variables non PL/SQL en tant que variables hte


Faire prcder les rfrences l'aide d'un signe deux-points (:)

1-31

Copyright Oracle Corporation, 2001. Tous droits rservs.

DBMS_OUTPUT.PUT_LINE

Procdure de package fournie par Oracle


Autre mthode d'affichage des donnes d'un bloc PL/SQL Doit tre activ dans iSQL*Plus via SET SERVEROUTPUT ON

SET SERVEROUTPUT ON DEFINE p_annual_sal = 60000


DECLARE v_sal NUMBER(9,2) := &p_annual_sal; BEGIN v_sal := v_sal/12; DBMS_OUTPUT.PUT_LINE ('The monthly salary is ' || TO_CHAR(v_sal)); END; /
1-32 Copyright Oracle Corporation, 2001. Tous droits rservs.

Synthse

Ce chapitre vous a appris les rgles suivantes :

Les blocs PL/SQL sont composs des sections suivantes :


dclarative (facultative)

excutable (obligatoire)
traitement des exceptions (facultative)

Un bloc PL/SQL peut tre un bloc, une procdure ou une fonction anonyme.

BEGIN EXCEPTION
DECLARE END;

1-33

Copyright Oracle Corporation, 2001. Tous droits rservs.

Synthse
Ce chapitre vous a appris les rgles suivantes :

Les identificateurs PL/SQL :


sont dfinis dans la section dclarative peuvent tre de type scalaire, composite, rfrenc ou LOB

peuvent tre bass sur la structure d'une autre variable ou d'un autre objet de base de donnes
peuvent tre initialiss


1-34

Les variables dclares dans un environnement externe tel qu'iSQL*Plus sont appeles variables hte DBMS_OUTPUT.PUT_LINE permet d'afficher les donnes d'un bloc PL/SQL.
Copyright Oracle Corporation, 2001. Tous droits rservs.

Prsentation de l'exercice 1

Dans cet exercice, vous allez :

dterminer la validit de quelques dclarations dclarer un bloc PL/SQL simple excuter un bloc PL/SQL simple

1-35

Copyright Oracle Corporation, 2001. Tous droits rservs.