Cette requête devrait nous retourner la somme des « montant_htva_total ».
Nous reproduisons le fragment de document XML ci-dessous.
La requête:
Cette requête comporte une erreur.
Nous la présentons car le résultat, qui n’est pas celui attendu, illustre très bien la notion de séquence
de résultats.
Fonctionnement de la requête.
La variable « $chargeind » est liée à la séquence « charge_indirecte ».
Une boucle FOR parcourt une à une les instantiations de la séquence et les passe à « $chargeind » .
Return affiche à chaque itération l’attribut « charge_indirecte/@montant_htva_total » de la variable
« $chargeind ».
Le résultat retourné.
Nous constatons que le résultat n’est pas un total, mais une séquence des nombres qui auraient du
être sommés.
La cause en est que nous avons intégré la fonction « SUM » dans la séquence de génération de
nombres, alors que la séquence aurait dû se produire dans « SUM », « SUM » étant une fonction
d’agrégation.
Si nous avions appelé la fonction « data » au lieu de la fonction « SUM », le résultat aurait été
identique.
La requête doit être modifiée de façon à ce que les itérations FOR se produisent au sein de
« SUM ».
Nous invoquons dès lors « SUM » au début de la requête
Nous obtenons le résultat attendu: la somme est de 17533,15 (Euro).
Page suivante : Calculer le coût d\'une unité d\'oeuvre (d\'activité)