ora 04091 probleme de table mutante
Bonjour,
j'ai une erreur de ce type qui remonte et je ne saisis pas très bien le pourquoi, pour l'instant j'ai contourné le probleme mais j'aimerai comprendre et nettoyer ce que j'ai fait.
dans un contexte hospitalier j'ai une table avec les séjours d'hospitalisation, et j'ai une table de facturation
facturation: id_technique_sejour,numero_de_sejour,prestation, nombre
séjour: id_technique_sejour, type_de_sejour
le but ici étant de mettre a jour le type de séjour en fonction d'élément de facturation. J'ai donc créé une fonction get_type_sejour qui effectue quelque chose dans le genre:
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| function get_type_sejour(parametre_sejour numer) return varchar2
select
case
when prestation in (,,,,) then 'type1'
when prestation in (,,,,) then 'type2'
else 'ND'
end into type_sejour
from facturation a, sejours b
and a.id_sejour = b.id_sejour
and b.numero_sejour = parametre_sejour;
return type_sejour; |
et après cela je comptais mettre a jour avec
Code:
1 2
| update sejours ref
set ref.type_sejour = get_type_sejour(ref.numero_sejour) |
et la boumbadaboum je me chope un sqlcode 4091 probleme de mutating table alors que je ne modifie en rien les données dans ma fonction, évidemment je réattaque ma table séjour car je passe alors par un index.
comment contourner ce probleme?
je suis en oracle 9.2.0.6
Merci pour votre aide