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 seqüência vazia, ele retornará a seqüê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. Para obter uma visão geral de cada uma dessas colunas, consulte Representação de tipo de dados xml no banco de dados do 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.