Функции контекста — last (XQuery)
Применимо к:SQL Server
Возвращает количество элементов в обрабатываемой в данный момент последовательности. Точнее, эта функция возвращает целочисленный индекс последнего элемента в последовательности. Значение индекса первого элемента в последовательности — 1.
Синтаксис
fn:last() as xs:integer
Замечания
В SQL Server fn:last() можно использовать только в контексте предиката, зависящей от контекста. Точнее, ее использование возможно только внутри квадратных скобок ([ ]
).
Примеры
В этом разделе приведены примеры XQuery для экземпляров XML, хранящихся в различных столбцах типа XML в базе данных AdventureWorks.
О. Использование функции last() языка XQuery для получения последних двух этапов производства
Следующий запрос получает последние два этапа производства для определенной модели продукта. Значение, количество этапов производства, возвращаемых функцией last() используется в этом запросе для получения последних двух производственных шагов.
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
В предыдущем запросе функция last() в //AWMI:root//AWMI:Location)[1]/AWMI:step[last()]
возвращает количество шагов производства. Это значение используется для получения последнего этапа производства на участке цеха.
Результат:
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>