Partilhar via


Função ceiling (XQuery)

Retorna o menor número sem uma parte fracionária que não seja menos que o valor de seu argumento. Se o argumento for uma sequência vazia, ele retornará a sequência vazia.

Sintaxe

fn:ceiling ( $arg as numeric?) as numeric?

Argumentos

  • $arg
    Número ao qual a função é aplicada.

Comentários

Se o tipo de $arg for um dos três tipos de base numéricos, xs:float, xs:double ou xs:decimal, o tipo de retorno será igual ao tipo $arg.

Se o tipo de $arg for um tipo derivado de um dos tipos numéricos, o tipo de retorno será o tipo numérico básico.

Se a entrada para as funções fn:floor, fn:ceiling ou fn:round for xdt:untypedAtomic, ela será convertida implicitamente em xs:double.

Qualquer outro tipo gera um erro estático.

Exemplos

Este tópico fornece exemplos de XQuery em instâncias XML armazenadas em várias colunas do tipo xml no banco de dados AdventureWorks.

A.Usando a função ceiling() XQuery

Para o modelo de produto 7, essa consulta retorna uma lista de locais de centro de trabalho no processo de fabricação do modelo de produto. Para cada local de centro de trabalho, a consulta retorna a ID do local, as horas de trabalho e o tamanho de lote, se documentados. A consulta usa a função ceiling para retornar as horas de trabalho como valores de tipo 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

Observe o seguinte na consulta anterior:

  • O prefixo do namespace AWMI significa Adventure Works Manufacturing Instructions. Esse prefixo se refere ao mesmo namespace usado no documento sendo examinado.

  • Instructions é um tipo de coluna xml. Portanto, o método query() (tipo de dados XML) é usado para especificar XQuery. A instrução XQuery é especificada como o argumento para o método de consulta.

  • for ... return é uma construção de loop. Na consulta, o loop for identifica uma lista de elementos <Location>. Para cada local de centro de trabalho, a instrução return no loop for descreve o XML a ser gerado:

    • Um elemento <Location> que tem os atributos LocationID e LaborHrs. A expressão correspondente dentro dos colchetes ({ }) recupera os valores exigidos do documento.

    • A expressão { $i/@LotSize } recupera o atributo LotSize do documento, se presente.

    • Este é o resultado:

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"/>

Limitações de implementação

Estas são as limitações:

  • A função ceiling() mapeia todos os valores inteiros para xs:decimal.

Consulte também

Referência

Função floor (XQuery)

Função round (XQuery)