Partage via


Fonctions constructeur (XQuery)

S’applique à :SQL Server

À partir d'une entrée spécifiée, les fonctions constructeur créent des instances de n'importe quel type atomique XSD intégré ou défini par l'utilisateur.

Syntaxe

  
TYP($atomicvalue as xdt:anyAtomicType?  
  
) as TYP?  
  

Arguments

$strval
Chaîne à convertir.

TYP
Tout type XSD intégré.

Remarques

Les constructeurs sont pris en charge pour les types XSD de base et dérivés. Toutefois, les sous-types de xs:duration, qui incluent xdt:yearMonthDuration et xdt:dayTimeDuration, et xs:QName, xs:NMTOKEN et xs:NOTATION ne sont pas pris en charge. Les types atomiques définis par l'utilisateur présents dans les collections de schémas associées sont également disponibles, sous réserve qu'ils soient directement ou indirectement dérivés des types ci-après.

Types de base pris en charge

Les types de base pris en charge sont les suivants :

  • xs:string

  • xs:boolean

  • xs:decimal

  • xs:float

  • xs:double

  • xs:duration

  • xs:dateTime

  • xs:time

  • xs:date

  • xs:gYearMonth

  • xs:gYear

  • xs:gMonthDay

  • xs:gDay

  • xs:gMonth

  • xs:hexBinary

  • xs:base64Binary

  • xs:anyURI

Types dérivés pris en charge

Les types dérivés pris en charge sont les suivants :

  • xs:normalizedString

  • xs:token

  • xs:language

  • xs:Name

  • xs:NCName

  • xs:ID

  • xs:IDREF

  • xs:ENTITY

  • xs:integer

  • xs:nonPositiveInteger

  • xs:negativeInteger

  • xs:long

  • xs:int

  • xs:short

  • xs:byte

  • xs:nonNegativeInteger

  • xs:unsignedLong

  • xs:unsignedInt

  • xs:unsignedShort

  • xs:unsignedByte

  • xs:positiveInteger

En outre, SQL Server prend en charge l'assemblage de constantes pour les appels de fonction de construction des façons suivantes :

  • Si l'argument est un littéral de chaîne, l'expression est évaluée pendant la compilation. Lorsque la valeur ne satisfait pas aux contraintes de type, une erreur statique est déclenchée.

  • Si l'argument est un littéral d'un autre type, l'expression est évaluée pendant la compilation. Lorsque la valeur ne satisfait pas aux contraintes de type, la séquence vide est renvoyée.

Exemples

Cette rubrique fournit des exemples XQuery sur des instances XML stockées dans différentes colonnes de type xml dans la base de données AdventureWorks.

R. Utilisation de la fonction XQuery dateTime() pour extraire les anciennes descriptions de produits

Dans cet exemple, un exemple de document XML est d’abord affecté à une variable de type xml . Ce document contient trois exemples d’éléments, chacun contenant unDateCreated><élément enfant.<ProductDescription>

La variable est ensuite interrogée afin que ne soient extraites que les descriptions de produits créées avant une date spécifique. À des fins de comparaison, la requête utilise la fonction de constructeur xs:dateTime() pour taper les dates.

declare @x xml  
set @x = '<root>  
<ProductDescription ProductID="1" >  
  <DateCreated DateValue="2000-01-01T00:00:00Z" />  
  <Summary>Some Summary description</Summary>  
</ProductDescription>  
<ProductDescription  ProductID="2" >  
  <DateCreated DateValue="2001-01-01T00:00:00Z" />  
  <Summary>Some Summary description</Summary>  
</ProductDescription>  
<ProductDescription ProductID="3" >  
  <DateCreated DateValue="2002-01-01T00:00:00Z" />  
  <Summary>Some Summary description</Summary>  
</ProductDescription>  
</root>'  
  
select @x.query('  
     for $PD in  /root/ProductDescription  
     where xs:dateTime(data( ($PD/DateCreated/@DateValue)[1] )) < xs:dateTime("2001-01-01T00:00:00Z")  
     return  
        element Product  
       {   
        ( attribute ProductID { data($PD/@ProductID ) },  
        attribute DateCreated { data( ($PD/DateCreated/@DateValue)[1] ) } )  
        }  
 ')  

Notez les points suivants dans la requête précédente :

  • For ... La structure de boucle WHERE est utilisée pour récupérer l’élément <ProductDescription> répondant à la condition spécifiée dans la clause WHERE.

  • La fonction de constructeur dateTime() est utilisée pour construire des valeurs de type dateTime afin qu’elles puissent être comparées de manière appropriée.

  • La requête construit ensuite le document XML obtenu. Étant donné que vous construisez une séquence d'attributs, des virgules et des parenthèses sont utilisées dans la construction XML.

Voici le résultat obtenu :

<Product   
   ProductID="1"   
   DateCreated="2000-01-01T00:00:00Z"/>  

Voir aussi

Construction XML (XQuery)
Fonctions XQuery impliquant le type de données xml