problème collection TABLE
Bonjour ,
J'ai créé une collection TABLE et lors de la compilation, j'ai l'erreur suivante :
Citation:
PLS-00103: Encountered the symbol "LCF" when expecting one of the
following:
. ( * @ % & = - + ; < / > in mod not rem an exponent (**)
<> or != or ~= >= <= <> and or like between is null is not ||
is dangling
The symbol "." was substituted for "LCF" to continue.
Voici le code de ma procédure :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
| procedure films_diffuses(n integer) is
type dfilm is record(
idf integer,
cpte integer);
type type_compte_film is TABLE of dfilm ;
lcf type_compte_film;
tmp type_compte_film;
cursor c_film is SELECT id_film from horaire order by id_film ;
tuple c_film%rowtype;
i integer;
nb integer;
ante_id integer;
rq varchar(50);
nomf varchar(100);
begin
ante_id := 0;
-- On ouvre un cursor c_film
open c_film;
fetch c_film into tuple;
while (c_film%found) loop
-- Si on trouve un nouveau film
if (tuple.id_film != ante_id) then
-- On agrandit la collection
lcf.extend;
-- On récupère l'identifiant du film
lcf(lcf.count).idf := tuple.id_film
-- On met son compte à 1
lcf(lcf.count).cpte := 1;
-- Si c'est toujours le même film, on augmente son compte de 1
else
lcf(lcf.count).cpte := lcf(lcf.count).cpte+1;
end if;
ante_id := tuple.id_film;
fetch c_film into tuple;
end loop;
close c_film;
-- On trie maintenant le tableau
nb := lcf.count;
tmp.extend;
for i in 1..nb-1 loop
if (lcf(i).cpte < lcf(i+1).cpte) then
tmp(1).idf:=lcf(i+1).idf;
tmp(1).cpte:=lcf(i+1).cpte;
lcf(i+1).idf := lcf(i).idf;
lcf(i+1).cpte := lcf(i).cpte;
lcf(i).idf:=tmp(1).idf;
lcf(i).cpte:=tmp(1).cpte;
end if;
end loop;
-- On va récupérer maintenant le nom des n films les plus diffusés
for i in 1..n loop
rq := 'SELECT nom_film from film where id_film = '||lcf(i).idf;
execute immediate rq into nomf;
dbms_output.put_line(nomf||'diffuse '||lcf(i).cpte||' fois');
end loop;
end; |
J'ai vu dans le forum que le EXTEND ne fonctionnait pas sur une collection non initialisée. Est-ce que l'erreur vient de là ? Ou dois-je chercher ailleurs ?
Merci !!