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 : 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 après cela je comptais mettre a jour avec

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)
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