Bonjour ,

J'ai créé une collection TABLE et lors de la compilation, j'ai l'erreur suivante :

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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 !!