Salut à tous,

Après plusieurs jours de trace, je viens de trouver une solution à un problème que je n'arrive cependant toujours pas à expliquer.

Pour situer le contexte il s'agit d'un algorithme de propagation sur un réseau routier. La procédure part d'un point P et se propage sur le reseau en cherchant à chaque jonction entre deux tronçons le tronçon suivant.

J'ai donc écrit un bloc anonyme qui appelle une procédure récursive en PL/SQL.
Cette procédure prend un paramètre IN en entrée.
La valeur de ce paramètre ne change pas jusqu'au moment où la procédure est appellée par elle-même avec une nouvelle valeur (la jonction suivante).

Hors il s'est produit la chose suivante : il arrive que la valeur du paramètre en entrée de la procédure change au sein de la même itération de la procédure (avant qu'elle ne se soit appelée elle-même), sans que j'ai travaillé sur cette valeur autrement qu'en lecture. J'ai des logs qui le montrent clairement. De plus évidemment l'algo ne se propageait pas sur tout le réseau.

J'ai pu résoudre le problème en déclarant une constante locale à la procédure et en lui assignant la valeur du paramètre en entrée.
A ce moment tout ce passe bien et mon réseau est parcouru completement.

Avez-vous déjà eu vent de problèmes de ce type ?
Je précise que nous sommes plusieurs développeurs à nous être penchés sur le problème et que personne n'a pu trouver d'explication.

Si vous le souhaitez je peux poster du code pour etayer mon propos.

Cordialement