J'utilise oracle 11G et la version 11.2.0.2.0 de pl/sql. Je suis plutôt un debutant sous oracle et sql en general. Le code suivant

Code pl/sql : 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
 
create or replace type chapeau
as object
(
	id_donnee       varchar2(255),
	valeur_anormale varchar2(255),
	pourcentage     number,
	constructor function chapeau(idt varchar2, valeur varchar2, compte number) return self as result
)
 
create or replace type body chapeau as
 
	constructor function chapeau(idt, valeur, compte) return self as result as
	begin
		self.id_donnee       := idt;
		self.valeur_anormale := valeur;
		self.pourcentage     := 400;
		return;
	end;
end;
 
declare
r chapeau := new chapeau('titi', 'toto ', 23);
begin
dbms_output.put_line(r.pourcentage);
end;

me renvoie l'erreur

Code log : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
l.2, col.18
PLS 00307 : trop de declarations de chapeau correspondent à cet appel
l.2, col.3
Item ignored
l.4, col.22
PLS00320 :declaration de type de cette expression imcomplete ou mal structurée
l.4, col.1
Statement ingnored

J'avais justement fait attention à appeler mon objet chapeau pour être sûr de ne pas avoir de conflit.