Gagne de la cryptomonnaie GRATUITE en 5 clics et aide institut numérique à propager la connaissance universitaire >> CLIQUEZ ICI <<

Les « function »

Non classé

En procédant de la sorte, nous obtenons un résultat différent, mais au prix d’une requête longue (121
lignes) et complexe à lire.

Nous utiliserons les « functions » ou fonctions proposées par XQuery afin d’alléger le code.

Le bloc suivant calculant la somme des mesurages pour une activité se répète à sept reprises.

Les  function

Nous le transformons en « function ».

Une « function » comporte les parties suivantes:

– la déclaration de « function » suivie de son nom « declare function local: ici le nom ».

– les paramètres de la « function » et le type retourné par la « function » (entre parenthèses).

– le corps de la « function » contenant les instructions de traitement.

Nous déclarons la « function » que nous nommons : « activite »:

declare function local:activite

Nous avons un seul paramètre qui est « act1 » ou « act2 », …, ou « act7 ».

La variable « $ak » que nous déclarons prendra comme argument un des sept « act… »

Ce paramètre est de type « atomic », et le résultat de la « function » sera également une valeur
« atomic » (un nombre).

La déclaration de « function » complète est:

declare function local:activite($ak as xs:anyAtomicType?)as xs:anyAtomicType?

Le corps de la « function » est la partie de imbriquée dans SUM.

Les  function 1

La « function » complète ci-dessous:

Les  function 2

Nous pouvons créer une seconde « function » calculant la somme des mesurage par activité pour
une commande précise.

Les  function 3

Nous nommons cette « function » « activite2 ».

Les  function 4

Les  function 5

XQuery permet qu’une « function » se trouve au sein d’un espace mémoire dédié ou bien dans la
requête elle même; nous retenons cette seconde possibilité.

Les deux « functions » se trouvent en préambule de la requête.

Au sein de la requête, pour le calcul relatif à l’activité1, nous appelons la « function » « activite »
par:

local:activite(“act1”)

et lui passons le paramètre « act1 »

et la seconde « function » qui reçoit le meme paramètre par:

local:activite2(“act1”)

La requête complète devient:

Les  function 6

Les  function 7

La requête est simplifiée, 85 lignes; si nous souhaitons modifier la méthode de calcul des quantités
de mesurage, une seule modification de « function » sera nécessaire, alors qu’il aurait fallu modifier
à sept reprises sans l’usage de « functions ».

Le résultat de cette requête est identique:

Les  function 8

Page suivante : Vérification du résultat

Retour au menu : Elaboration d’une application de la méthode Activity Based Costing utilisant les technologies XML