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:
et après cela je comptais mettre a jour avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 update sejours ref set ref.type_sejour = get_type_sejour(ref.numero_sejour)
comment contourner ce probleme?
je suis en oracle 9.2.0.6
Merci pour votre aide
Partager