Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/05/2008, 17h16   #1
Invité de passage
 
Inscription : mars 2006
Messages : 15
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 15
Points : 2
Points : 2
Par défaut Mise à jour (relationnel-objet)

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 :
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 :
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 :
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?
roms712 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h37.


 
 
 
 
Partenaires

Hébergement Web