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.
TYP
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