Funzioni costruttore (XQuery)

Si applica a:SQL Server

Le funzioni costruttore creano istanze di un qualsiasi tipo atomico XSD predefinito o definito dall'utente a partire da un input specificato.

Sintassi

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

Argomenti

$strval
Stringa che verrà convertita.

TIPICO
Qualsiasi tipo XSD predefinito.

Osservazioni:

Le funzioni costruttore sono supportate per i tipi atomici XSD di base e derivati. Tuttavia, i sottotipi di xs:duration, che includono xdt:yearMonthDuration e xdt:dayTimeDuration, xs:QName, xs:NMTOKEN e xs:NOTATION non sono supportati. Sono inoltre disponibili i tipi atomici definiti dall'utente contenuti nelle raccolte di schemi associate, a condizione che siano derivati direttamente o indirettamente dai tipi seguenti.

Tipi di base supportati

Di seguito sono elencati i tipi di base supportati:

  • 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

Tipi derivati supportati

Di seguito sono elencati i tipi derivati supportati:

  • 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

SQL Server supporta inoltre l'elaborazione delle costanti in fase di compilazione per le chiamate di funzioni costruttore, come indicato di seguito:

  • Se l'argomento è un valore letterale stringa, l'espressione verrà valutata in fase di compilazione. Quando il valore non soddisfa i vincoli di tipo, viene generato un errore statico.

  • Se l'argomento è un valore letterale di un altro tipo, l'espressione verrà valutata in fase di compilazione. Quando il valore non soddisfa i vincoli di tipo, viene restituita la sequenza vuota.

Esempi

In questo argomento vengono forniti esempi di XQuery su istanze XML archiviate in varie colonne di tipo xml nel database AdventureWorks.

R. Utilizzo della funzione XQuery dateTime() per recuperare descrizioni di prodotto non recenti

In questo esempio, un documento XML di esempio viene prima assegnato a una variabile di tipo xml . Questo documento contiene tre elementi di esempio <ProductDescription> , ognuno dei quali contiene un <DateCreated> elemento figlio.

Viene quindi eseguita una query sulla variabile per recuperare le descrizioni di prodotto create prima di una data specifica. Ai fini del confronto, la query usa la funzione del costruttore xs:dateTime() per digitare le date.

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] ) } )  
        }  
 ')  

Dalla query precedente si noti quanto segue:

  • For ... La struttura del ciclo WHERE viene utilizzata per recuperare l'elemento <ProductDescription> che soddisfa la condizione specificata nella clausola WHERE.

  • La funzione del costruttore dateTime() viene usata per costruire valori di tipo dateTime in modo che possano essere confrontati in modo appropriato.

  • La query genera quindi il codice XML risultante. Poiché si sta creando una sequenza di attributi, nella costruzione di strutture XML vengono utilizzate virgole e parentesi.

Risultato:

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

Vedi anche

Costruzione di strutture XML (XQuery)
Funzioni XQuery per il tipo di dati XML