Partager via


Fonction ceiling (XQuery)

Renvoie le nombre le plus petit sans portion décimale qui n'est pas inférieur à la valeur de cet argument. Si l'argument est une séquence vide, la fonction renvoie la séquence vide.

Syntaxe

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

Argument

  • $arg
    Nombre à laquelle s'applique la fonction.

Notes

Si le type de $arg est l'un des trois types numériques de base, xs:float, xs:double ou xs:decimal, la valeur renvoyée garde le type de $arg.

Si le type de $arg est un type dérivé de l'un des types numériques, le type de la valeur renvoyée est le type numérique de base.

Si la valeur d'entrée des fonctions fn:floor, fn:ceiling ou fn:round est xdt:untypedAtomic, elle est implicitement convertie en xs:double.

Tout autre type génère une erreur statique.

Exemples

Cette rubrique propose des exemples de XQuery relatifs à des instances XML stockés dans différentes colonnes de type xml tirées de la base de données AdventureWorks2008R2. Pour obtenir une vue d'ensemble de chacune de ces colonnes, consultez Représentation du type de données xml dans la base de données AdventureWorks2008R2.

A. Utilisation de la fonction ceiling() de XQuery

Pour le modèle de produit 7, cette requête renvoie une liste des postes de travail que compte le processus de fabrication du modèle de produit. Pour chaque poste de travail, la requête renvoie l'ID, les heures de main-d'œuvre et la taille des lots, le cas échéant. La requête utilise la fonction ceiling pour renvoyer les heures de main-d'œuvre sous forme de valeurs de type 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

Notez les points suivants par rapport à la requête précédente :

  • Le préfixe d'espace de noms AWMI signifie Adventure Works Manufacturing Instructions (instructions de fabrication d'Adventure Works). Ce préfixe fait référence à l'espace de noms utilisé dans le document interrogé.

  • Instructions est une colonne de type xml. Par conséquent, la méthode query() (type de données XML) sert à définir XQuery. L'instruction XQuery est spécifiée comme argument de la méthode query.

  • for ... return est une construction itérative. Dans la requête, la boucle for identifie une liste d'éléments <Location>. Pour chaque poste de travail, l'instruction return de la boucle for décrit le code XML à générer :

    • Un élément <Location> qui a deux attributs, LocationID et LaborHrs. L'expression correspondante entre accolades ({ }) récupère les valeurs requises à partir du document.

    • L'expression { $i/@LotSize } récupère l'attribut LotSize du document, s'il existe.

    • Voici le résultat obtenu :

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

Limites de mise en œuvre

Les limitations suivantes s'appliquent :

  • La fonction ceiling() associe toutes les valeurs entières à xs:decimal.