Funzione ceiling (XQuery)

Restituisce il più piccolo numero senza una parte frazionaria e non inferiore al valore del relativo argomento. Se l'argomento è una sequenza vuota, restituisce la sequenza vuota.

Sintassi

fn:ceiling ( $arg as numeric?) as numeric?

Argomenti

  • $arg
    Numero al quale viene applicata la funzione.

Osservazioni

Se $arg è di uno dei tre tipi numerici di base, xs:float, xs:double o xs:decimal, il tipo restituito è uguale al tipo di $arg.

Se $arg è di un tipo derivato da uno dei tipi numerici, il tipo restituito è il tipo numerico di base.

Se l'input per le funzioni fn:floor, fn:ceiling o fn:round è rappresentato da dati di tipo xdt:untypedAtomic, ne verrà eseguito il cast implicito a xs:double.

Qualsiasi altro tipo di dati genera un errore statico.

Esempi

In questo argomento vengono forniti esempi di utilizzo del linguaggio XQuery sulle istanze XML archiviate in diverse colonne di tipo xml nel database AdventureWorks2008R2. Per una panoramica su ognuna di queste colonne, vedere Rappresentazione del tipo di dati XML nel database AdventureWorks2008R2.

A. Utilizzo della funzione booleana XQuery ceiling()

Per il modello di prodotto 7, la query restituisce un elenco dei centri di lavorazione coinvolti nel processo di produzione del modello. Per ogni centro di lavorazione, la query restituisce l'ID, le ore di manodopera e la dimensione del lotto, se documentati. La query utilizza la funzione ceiling per restituire le ore di manodopera come valori di 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

Dalla query precedente si noti quanto segue:

  • Il prefisso AWMI è l'acronimo di Adventure Works Manufacturing Instructions e fa riferimento allo stesso spazio dei nomi utilizzato nel documento sul quale viene eseguita la query.

  • Instructions è una colonna di tipo xml e pertanto per specificare la query XQuery viene utilizzato il metodo query() (tipo di dati XML). L'istruzione XQuery viene specificata come argomento nel metodo della query.

  • for ... return è un costrutto di ciclo. Nella query, il ciclo for identifica un elenco di elementi <Location>. Per ogni centro di lavorazione, l'istruzione return nel ciclo for descrive il codice XML da generare:

    • Elemento <Location> con gli attributi LocationID e LaborHrs. L'espressione corrispondente racchiusa tra parentesi graffe ({ }) recupera i valori necessari dal documento.

    • L'espressione { $i/@LotSize } recupera l'attributo LotSize dal documento, se presente.

    • Risultato:

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"/>

Limitazioni di implementazione

Limitazioni:

  • La funzione ceiling() mappa tutti i valori integer a xs:decimal.