Funciones de valores numéricos: ceiling
Se aplica a:SQL Server
Devuelve el número más pequeño, sin la parte fraccionaria, que no sea menor que el valor de su argumento. Si el argumento es una secuencia vacía, devuelve la secuencia vacía.
Sintaxis
fn:ceiling ( $arg as numeric?) as numeric?
Argumentos
$arg
Número al que se aplica la función.
Comentarios
Si el tipo de $arg es uno de los tres tipos base numéricos, xs:float, xs:double o xs:decimal, el tipo de valor devuelto es el mismo que el tipo de $arg .
Si el tipo de $arg es un tipo que se deriva de uno de los tipos numéricos, el tipo de valor devuelto es el tipo numérico base.
Si la entrada a las funciones fn:floor, fn:ceiling o fn:round es xdt:untypedAtomic, se convierte implícitamente a xs:double.
Cualquier otro tipo genera un error estático.
Ejemplos
En este tema se proporcionan ejemplos de XQuery en instancias XML que se almacenan en varias columnas de tipo xml en la base de datos AdventureWorks.
A. Usar la función ceiling() de XQuery
Para el modelo de producto 7, esta consulta devuelve una lista de las ubicaciones de los centros de trabajo del proceso de fabricación del modelo de producto. Para cada ubicación de centro de trabajo, la consulta devuelve el Id. de ubicación, las horas de trabajo y el tamaño del lote, en caso de que estén documentados. La consulta usa la función ceiling para devolver las horas de trabajo 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 lo siguiente en la consulta anterior:
El prefijo de espacio de nombres AWMI viene del inglés Adventure Works Manufacturing Instructions (instrucciones de fabricación de Adventure Works). Este prefijo hace referencia al mismo espacio de nombres que se utiliza en el documento que se consulta.
Las instrucciones son una columna de tipo xml . Por lo tanto, el método query() (tipo de datos XML) se usa para especificar XQuery. La instrucción de XQuery se especifica como el argumento para el método de consulta.
Para... return es una construcción de bucle. En la consulta, el bucle for identifica una lista de <elementos Location> . Para cada ubicación del centro de trabajo, la instrucción return del bucle for describe el XML que se va a generar:
Elemento <Location> que tiene atributos LocationID y LaborHrs. La expresión correspondiente situada dentro de las llaves ({ }) recupera los valores requeridos del documento.
La expresión { $i/@LotSize } recupera el atributo LotSize del documento, si existe.
El resultado es el siguiente:
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"/>
Limitaciones de la implementación
Éstas son las limitaciones:
- La función ceiling() asigna todos los valores enteros a xs:decimal.