ceiling-Funktion (XQuery)

Gibt die kleinste Anzahl ohne Stellen hinter dem Dezimalpunkt zurück, die nicht geringer ist als der Wert des Funktionsarguments. Wenn das Argument eine leere Sequenz ist, wird die leere Sequenz zurückgegeben.

Syntax

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

Argumente

  • $arg
    Anzahl, auf die die Funktion angewendet wird.

Hinweise

Wenn der Typ von $arg einer der drei numerischen Basistypen xs:float, xs:double oder xs:decimal ist, entspricht der Rückgabetyp dem $arg-Typ.

Wenn der Typ von $arg ein Typ ist, der aus einem der numerischen Typen abgeleitet ist, ist der Rückgabetyp der numerische Basistyp.

Wenn die Eingabe für die Funktionen fn:floor, fn:ceiling oder fn:round xdt:untypedAtomic ist, wird sie implizit in xs:double umgewandelt.

Alle anderen Typen führen zum Generieren eines statischen Fehlers.

Beispiele

Dieses Thema stellt XQuery-Beispiele für XML-Instanzen bereit, die in verschiedenen Spalten vom xml-Typ in der AdventureWorks2008R2-Datenbank gespeichert werden. Eine Übersicht dieser Spalten finden Sie unter Darstellung des xml-Datentyps in der AdventureWorks2008R2-Datenbank.

A. Verwenden der XQuery-Funktion ceiling()

Für Produktmodell 7 gibt die Abfrage eine Liste der Arbeitsplatzstandorte im Produktionsprozess des Produktmodells zurück. Für jeden einzelnen Arbeitsplatzstandort gibt die Abfrage die Standortkennung, die Arbeitsstunden sowie die Losgröße zurück, sofern diese dokumentiert ist. Die Abfrage verwendet die ceiling-Funktion, um die Arbeitsstunden als Werte des Typs decimal zurückzugeben.

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

Beachten Sie hinsichtlich der vorherigen Abfrage Folgendes:

  • Das AWMI-Namespacepräfix steht für Adventure Works Manufacturing Instructions. Dieses Präfix verweist auf denselben Namespace, der im abgefragten Dokument verwendet wird.

  • Instructions ist eine Spalte des xml-Typs. Daher wird query() method (XML data type) zum Angeben von XQuery verwendet. Die XQuery-Anweisung wird als Argument für die Abfragemethode angegeben.

  • for ... return ist eine Schleifenkonstruktion. In der Abfrage identifiziert die for-Schleife eine Liste von <Location>-Elementen. Für jeden Arbeitsplatzstandort beschreibt die return-Anweisung in der for-Schleife den zu generierenden XML-Code:

    • Ein <Location>-Element, das LocationID- und LaborHrs-Attribute besitzt. Der entsprechende Ausdruck in den geschweiften Klammern ({ }) ruft die erforderlichen Werte aus dem Dokument ab.

    • Der { $i/@LotSize }-Ausdruck ruft das LotSize-Attribut aus dem Dokument ab, sofern dieses vorhanden ist.

    • Dies ist das Ergebnis:

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

Implementierungseinschränkungen

Die folgenden Einschränkungen sind vorhanden:

  • Die ceiling()-Funktion ordnet alle ganzzahligen Werte xs:decimal zu.