Bonjour,

j'ai 5 types avec les 4 derniers qui héritent de employe_type
employe_type (not final not instantiable)
ingenieur_type (final instantiable)
responsable_type (idem)
administrateur_type (idem)
chef_projet_type (idem)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
create or replace type body employe_type as
member procedure MAJNom(nom in varchar2) is
begin
        dbms_output.put_line(self.nom_employe);
	self.nom_employe:=nom;
        dbms_output.put_line(self.nom_employe);
end MAJNom;
end;
ceci ne fonctionne pas qu'il y ait de l'héritage ou non...
je précise que ceci s'exécute bien mais les données n'ont pas été mises à jour (oui oui l'employe 3 existe bien), les put_line affichent les bonnes valeurs pourtant
est ce que self ne serait qu'une sorte de variable temporaire????
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
declare
	var ingenieur_type;
begin
	select value(i) into var from ingenieur i where i.id_employe=3;
	var.MAJNom('toto');
end;
/
dupont
toto
Procedure PL/SQL terminee avec succes.

par contre ça fonctionne bien avec le code ci-dessous mais du coup l'héritage ne servirait plus à rien puisque je serais obligé de faire une fonction MAJNom dans chaque sous type...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
create or replace type body employe_type as
member procedure MAJNom(nom in varchar2) is
begin
	update employe e set e.nom_employe = nom where e.id_employe=self.id_employe;
end MAJNom;
end;

une idée svp?