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.