Fonctions relatives au contexte : last (XQuery)
S’applique à :SQL Server
Renvoie le nombre d'éléments de la séquence en cours de traitement. Renvoie plus précisément l'index entier du dernier élément de la séquence. Le premier élément de la séquence a une valeur d'index de 1.
Syntaxe
fn:last() as xs:integer
Notes
Dans SQL Server, fn:last() ne peut être utilisé que dans le contexte d’un prédicat dépendant du contexte. Autrement dit, elle ne peut être utilisée qu'à l'intérieur de crochets ([ ]
).
Exemples
Cette rubrique fournit des exemples XQuery sur des instances XML stockées dans différentes colonnes de type xml dans la base de données AdventureWorks.
R. Utilisation de la fonction XQuery last() pour récupérer les deux dernières étapes de fabrication.
La requête suivante récupère les deux dernières étapes de fabrication d'un modèle de produit spécifique. La valeur, le nombre d’étapes de fabrication, retournée par la fonction last() est utilisée dans cette requête pour récupérer les deux dernières étapes de fabrication.
SELECT ProductModelID, Instructions.query('
declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";
<LastTwoManuSteps>
<Last-1Step>
{ (/AWMI:root/AWMI:Location)[1]/AWMI:step[(last()-1)]/text() }
</Last-1Step>
<LastStep>
{ (/AWMI:root/AWMI:Location)[1]/AWMI:step[last()]/text() }
</LastStep>
</LastTwoManuSteps>
') as Result
FROM Production.ProductModel
WHERE ProductModelID=7
Dans la requête précédente, la fonction last() dans //AWMI:root//AWMI:Location)[1]/AWMI:step[last()]
retourne le nombre d’étapes de fabrication. Cette valeur permet de récupérer la dernière étape de fabrication sur ce poste de travail.
Voici le résultat obtenu :
ProductModelID Result
-------------- -------------------------------------
7 <LastTwoManuSteps>
<Last-1Step>
When finished, inspect the forms for defects per
Inspection Specification .
</Last-1Step>
<LastStep>Remove the frames from the tool and place them
in the Completed or Rejected bin as appropriate.
</LastStep>
</LastTwoManuSteps>