Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

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.

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

$arg

Nombre à laquelle s'applique la fonction.

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.

Cette rubrique propose des exemples de XQuery relatifs à des instances XML stockées dans différentes colonnes de type xml tirées de la base de données AdventureWorks.

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="http://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.

Cela vous a-t-il été utile ?
(1500 caractères restants)
Merci pour vos suggestions.

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft