Функция ceiling (XQuery)
Возвращает наименьшее целое число, которое не меньше значения, переданного как аргумент функции. Если аргумент представляет собой пустую последовательность, то возвращается пустая последовательность.
Синтаксис
fn:ceiling ( $arg as numeric?) as numeric?
Аргументы
- $arg
Число, к которому применяется функция.
Замечания
Если тип $arg принадлежит к одному из трех базовых числовых типов, xs:float, xs:double или xs:decimal, то возвращаемое значение будет принадлежать к тому же типу, что и значение $arg.
Если тип $arg является одним из производных числовых типов, то возвращаемое значение будет иметь базовый числовой тип.
Если аргументом функций fn:floor, fn:ceiling и fn:round является значение типа xdt:untypedAtomic, оно неявно приводится к типу xs:double.
Использование любого другого типа вызовет статическую ошибку.
Примеры
В этом подразделе приведены примеры запросов XQuery к экземплярам XML, которые хранятся в различных столбцах типа xml в базе данных AdventureWorks. Обзор каждого из этих столбцов см. в разделе Представление типов xml-данных в базе данных AdventureWorks.
А. Использование функции XQuery ceiling()
Для модели продуктов 7 этот запрос вернет список адресов цехов, участвующих в производстве продуктов этой модели. Для каждого адреса цеха запрос вернет идентификатор адреса, рабочее время и размер территории, если они указаны. В запросе функция ceiling используется для возвращения рабочего времени в виде значений типа decimal.
SELECT ProductModelID, Instructions.query('
declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";
for $i in /AWMI:root/AWMI:Location
return
<Location LocationID="{ $i/@LocationID }"
LaborHrs="{ ceiling($i/@LaborHours) }" >
{
$i/@LotSize
}
</Location>
') AS Result
FROM Production.ProductModel
WHERE ProductModelID=7
Обратите внимание на следующее в предыдущем запросе.
- Префикс пространства имен AWMI означает «Adventure Works Manufacturing Instructions» (производственные инструкции Adventure Works). Этот префикс именует то же пространство имен, что используется и в документе, к которому строится запрос.
- Столбец Instructions относится к типу xml. Поэтому для определения запроса XQuery используется метод query() (тип данных XML). Инструкция XQuery задана как аргумент метода query.
- for ... return — конструкция цикла. В этом запросе цикл for определяет список элементов <Location>. Для каждого адреса цеха инструкция return цикла for описывает XML-код, который будет создан:
- Элемент <Location> с атрибутами LocationID и LaborHrs. Соответствующее выражение в фигурных скобках ({ }) получает запрашиваемые значения из документа.
- Выражение { $i/@LotSize } получает значение атрибута LotSize из документа, если оно там указано.
- Результат:
ProductModelID Result
-------------- ------------------------------------------------------
7 <Location LocationID="10" LaborHrs="3" LotSize="100"/>
<Location LocationID="20" LaborHrs="2" LotSize="1"/>
<Location LocationID="30" LaborHrs="1" LotSize="1"/>
<Location LocationID="45" LaborHrs="1" LotSize="20"/>
<Location LocationID="60" LaborHrs="3" LotSize="1"/>
<Location LocationID="60" LaborHrs="4" LotSize="1"/>
Ограничения реализации
Существуют следующие ограничения:
- Функция ceiling() отображает все целые значения в тип xs:decimal.