Partilhar via


Funções de valores numéricos - teto

Aplica-se a:SQL Server

Retorna o menor número sem uma parte fracionária e que não é menor do 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érica, xs:float, xs:doubleou xs:decimal, o tipo de retorno será o mesmo que o tipo $arg.

Se o tipo de $arg é um tipo derivado de um dos tipos numéricos, o tipo de retorno é o tipo numérico base.

Se a entrada para as funções fn:floor, fn:ceiling ou fn:round for xdt:untypedAtomic, ela será implicitamente convertida para 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 xml type no banco de dados AdventureWorks.

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

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

  • O prefixo do namespace AWMI significa Instruções de fabricação da Adventure Works. Esse prefixo refere-se ao mesmo namespace usado no documento que está sendo consultado.

  • Instruções é uma coluna de tipo de 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.

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

    • Um <Location> elemento que tem atributos LocationID e LaborHrs. A expressão correspondente dentro das chaves ({ }) recupera os valores necessários 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.

Ver também

Função de piso (XQuery)
função redonda (XQuery)