Apparemment sur un objet Oracle (Type) il est impossible de modifier
directement les propriétés de cet objet dans une fonction membre (member function) alors que cela est possible dans une procédure, pourquoi ? :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
create or replace type body typ_test is
 
  member procedure proc(p in number) is begin
    self.maval := p*2; -- <<--ce ci est possible
  end proc;
 
  member function func(p in number) return number is begin
    self.maval := p*2; -- <<--ce ci est IMPOSSIBLE pourkoi et comment faire ?
    return self.maval /p;
  end func;
 
end;
Le message d'erreur est:
"...
expression 'SELF.MAVAL' ne peut être utilisée comme cible d'affectation
..."
Pourquoi et comment contourner cela ?

Merci d'avance

EDIT par bouyao: