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.

Consulte también

Floor (Función) (XQuery)
round (función de XQuery)