Compartir a través de


ceiling (función de XQuery)

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 numéricos básicos, xs:float, xs:double o xs:decimal, el tipo devuelto es el mismo que el tipo de $arg.

Si el tipo de $arg es un tipo derivado de uno de los tipos numéricos, el tipo de valor devuelto es el tipo numérico base.

Si la entrada de las funciones fn:floor, fn:ceiling o fn:round es xdt:untypedAtomic, se convierte de forma implícita a xs:double.

Cualquier otro tipo genera un error estático.

Ejemplos

En este tema se ofrecen ejemplos de consultas XQuery con instancias XML almacenadas 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 utiliza 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.

  • Instructions es una columna de tipo xml. Por lo tanto, el método query() del tipo de datos XML se utiliza para especificar XQuery. La instrucción XQuery se especifica como el argumento del método de consulta.

  • for ... return es una construcción de bucle. En la consulta, el bucle for identifica una lista de elementos <Location>. Para cada ubicación de centro de trabajo, la instrucción return del bucle for describe el XML que se va a generar:

    • Elemento <Location> con los 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

Estas son las limitaciones:

  • La función ceiling() asigna todos los valores enteros a xs:decimal.

Vea también

Referencia

floor (función de XQuery)

round (función de XQuery)