Généralités

 

Un tableau PL/SQL

Définition :
TYPE nom_tableau_pl IS TABLE OF datatype [NOT NULL]
INDEX BY BINARY_INTEGER;
nom_tableau_pl nom du tableau
datatype type (curseur, record, variable...)

Declaration :
mon_tableau nom_tableau_pl ;

 


Tableau de 2 entiers

-- table de multiplication par 8 et par 9...
declare
type tablemul is record ( par8 number, par9 number);
type tabledentiers is table of tablemul index by binary_integer;
ti tabledentiers;
i number;
begin
for i in 1..10 loop
ti(i).par9 := i*9 ;
ti(i).par8:= i*8;
dbms_output.put_line (i||'*8='||ti(i).par8||' '||
i||'*9='||ti(i).par9 );
end loop;
end;
/

 


Tableau de champs numeriques

-- on va lire les salaires de emp...
declare
type tsal is table of emp.sal%type index by binary_integer;
tasal tsal;
i number;
cursor cur is select sal from emp;
begin
open cur;
i :=1;
loop
exit when cur%notfound;
fetch cur into tasal(i) ;
dbms_output.put_line ('salaire ...'||tasal(i));
i := i + 1;
end loop;
end;
/

 


Description des attributs des tableaux PL/SQL

nom_table_sql.COUNT retourne le nombre d’élements de la table
nom_table_sql.DELETE supprime toute la table
nom_table_sql.DELETE (n) supprime l’élément n
nom_table_sql.DELETE (n,m) supprime les éléments de n à m
nom_table_sql.EXISTS (n) retourne TRUE si l’élément n existe
nom_table_sql.FIRST retourne le premier index
nom_table_sql.LAST retourne la valeur du dernier index
nom_table_sql.NEXT(n) élément suivant
nom_table_sql.PRIOR(n) élément précédent

 

 


Utilisation des attributs de tableau


declare
type tsal is table of emp.sal%type index by binary_integer;
tasal tsal;
i number;
cursor cur is select sal from emp;
begin
open cur;
i :=1;
loop
exit when cur%notfound;
fetch cur into tasal(i) ;
i := i + 1;
end loop;
close cur;
dbms_output.put_line ('premier élément : '||tasal(tasal.FIRST) );
dbms_output.put_line ('dernier élément : '||tasal(tasal.LAST) );
dbms_output.put_line ('nombre d élément : '||tasal.COUNT);
dbms_output.put_line ('suppresion des éléments '||tasal.next(1)||' à '||tasal.prior(tasal.COUNT));
tasal.delete(2,tasal.COUNT-1);
dbms_output.put_line ('nombre d élément : '||tasal.COUNT);
end;
/

 


(c) 2002- 2006 Didier Deléglise


modifié
le 20/11/2006

Ecrire a DD
ecris
moi


les forums techniques Oracle

mon BLOG Oracle,
en Francais
connaitre DD
l'autre vie
de DD

mon CV

trucs
et astuces

JOBs Oracle
du jour
Homepage "Tout sur Oracle"
Mon site :
Tout sur Oracle (et le web)
Copyright (C) 2002
Utilisation de ces documents