Vous êtes sur la page 1sur 7

Les Catégories de Variables

Variables de types Scalaires


Ref à une
TYPE variable
Scalar

%TYPE Ref a un champ


table

Variable de types composites

Type

Record La ligne
d’une
%rowtype
table
Composit

Collection
varray

Table

Associative
Array

A
Les collections : les varraay

SET SERVEROUTPUT ON;


-- varray

--utilisation
declare La création d’un nouveau type
(lessalaires) qui est un tableau de 4
élément et de type number .
--definition d’un nouveaue type
type lessalaires is varray(4) of number;

--declaration
mavar lessalaires := lessalaires();
begin

--initialisation

--utilisation
DBMS_OUTPUT.put_line(mavar.count);
end;
/

SET SERVEROUTPUT ON;


-- varray

--utilisation
declare

--definition
type lessalaires is varray(4) of number;
--declaration
mavar lessalaires := lessalaires(); Reserver l’espace mémoire de la taille
donnée. Il doit étre <ou= a l’espace
begin réservé à la définition du type.
mavar.extend(1);

--initialisation

--utilisation
DBMS_OUTPUT.put_line(mavar.count);
end;
/

Affichage des éléments


SET SERVEROUTPUT ON;
Les varray doit avoir un
declare
constructeur
--definition
type lessalaires is varray(4) OF number;
--declaration
mavar lessalaires := lessalaires();
begin
Extend est un procédure stocké
--initialisation de varray qui permet de reserver
un emplacement mémoire

mavar.extend(1);
mavar(4) :=4000; Count est une fonction de
varray qui donne le nombre
d’élément réservé
--utilisation
DBMS_OUTPUT.put_line(mavar.count);
DBMS_OUTPUT.put_line('element 1 = '|| mavar(1));
DBMS_OUTPUT.put_line('element 2 = '|| mavar(2));
DBMS_OUTPUT.put_line('element 3 = '|| mavar(3));
DBMS_OUTPUT.put_line('element 4 = '|| mavar(4));
end;
/

- Les fonctions de Varray (Limit Trim First Last Prior Next)

Fonction Limit
SET SERVEROUTPUT ON;
--La fonction Limit
declare
--definition
type lessalaires is varray(4) OF number;
--declaration
Mais nous avons pour le
mavar lessalaires := lessalaires();
moment 3 éléments stockés
begin
mavar.extend(4);
--initialisation
mavar(1) :=1000; Maximum d’éléments
mavar(2) :=2000;
mavar(3) :=3000;

Nous avons 4
mavar.trim(3) ;
emplacements
--utilisation mémoire réservée

DBMS_OUTPUT.put_line('max = '|| mavar.limit);


DBMS_OUTPUT.put_line('nbres de cases reservées = '|| mavar.count);
end;
/

Fonction Trim
SET SERVEROUTPUT ON;
--La fonction Trim
declare
--definition
type lessalaires is varray(4) OF number;
--declaration
mavar lessalaires := lessalaires();
begin
Dans ce cas la fonction trim
mavar.extend(4); nous permet de supprimer
les 2 dernières colonnes
--initialisation
mavar(1) :=1000;
mavar(2) :=2000;
mavar(3) :=3000;
mavar.trim(2) ;
--utilisation
DBMS_OUTPUT.put_line('max = '|| mavar.limit);
DBMS_OUTPUT.put_line('nbres de cases reservées = '|| mavar.count);
DBMS_OUTPUT.PUT_LINE(mavar(2));
end;
/

Les Fonctions : First, Last, Prior, Next


SET SERVEROUTPUT ON;
--La fonction Trim
declare
--definition
type lessalaires is varray(4) OF number;
--declaration
mavar lessalaires := lessalaires();
begin
mavar.extend(4);
--initialisation
mavar(1) :=1000;
mavar(2) :=2000;
mavar(3) :=3000;

--utilisation
DBMS_OUTPUT.put_line('max = '|| mavar.limit);
DBMS_OUTPUT.put_line('nbres de cases reservées = '|| mavar.count);
DBMS_OUTPUT.PUT_LINE(mavar.first); affiche le premier élément
DBMS_OUTPUT.PUT_LINE(mavar.last); affiche le dernier élément
DBMS_OUTPUT.PUT_LINE(mavar.prior(2)); affiche l’indice précèdant l’élément 2
DBMS_OUTPUT.PUT_LINE(mavar.next(1)); affiche l’indice suivant l’élément 1
end;
/

NB : L’ensemble de ces fonctions seront utilisées dans les curseurs ou le


procédures stockés qui vont parcourir les résultats qui seront extraits d’une base de
donnée. On utilise ces deux fonctions prior et next quand on ne veut pas traiter les
éléments nulls..

Extraction de données dans la base de données que nous allons afficher dans
un varray
SET SERVEROUTPUT ON;
Declare
type lessalaires is varray(4) OF number;

Varray permet de stocker plusieurs


mavar lessalaires := lessalaires(); valeurs.

begin Donc nous allons utiliser l’instruction bulk


collect.
select salary
bulk collect into mavar
from employees
where employee_id in (100,101,102,103);
dbms_output.put_line(mavar(1));
dbms_output.put_line(mavar(2));
dbms_output.put_line(mavar(3));
dbms_output.put_line(mavar(4));
end;
/

TAF :
Ecrire un programme PL/Sql, en créant un varray de 8 éléments.
1) réservez 6 espace mémoire et enregistré dans chaque espace mémoire une
valeur de votre choix
2) affichez l’enregistrement 1
3) affichez le nombre d’espace mémoire réservée
4) affichez le premier indice du tableau
5) affichez le dernier indice du tableau
6) affichez l’indice du tableau qui précede l’élément 4
7) affichez l’indidice du tableau qui suit apres l’élément 5
8) affichez le nom des employées qui ont pour id (100,102,103,104)

Vous aimerez peut-être aussi