Функция 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 в базе данных База данных AdventureWorks2008R2. Обзор каждого из этих столбцов см. в разделе Представление типов данных XML в базе данных AdventureWorks2008R2.

А. Использование функции 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.

См. также

Справочник