Funkcji konstruktora (XQuery)
Z wejścia określonej funkcji konstruktora tworzyć wystąpienia dowolnego typu XSD wbudowanej lub zdefiniowanej przez użytkownika niepodzielny.
Składnia
TYP($atomicvalue as xdt:anyAtomicType?
) as TYP?
Argumenty
$strval
Ciąg, który będzie konwertowany.TYP
Dowolny wbudowany typ XSD.
Uwagi
Konstruktory są obsługiwane dla podstawowego i pochodnych niepodzielny typów XSD.Jednakże podtypów xs: duration, która obejmuje xdt:yearMonthDuration i xdt:dayTimeDuration, i xs:QName, xs:NMTOKEN, i xs:NOTATION nie są obsługiwane.Zdefiniowany przez użytkownika niepodzielny dostępne typy w kolekcji skojarzony schemat są również dostępne, pod warunkiem, że bezpośrednio lub pośrednio pochodzą z następujących typów.
Obsługiwane typy podstawowe
Są obsługiwane typy podstawowe:
xs:ciąg
xs:Boolean
xs:decimal
xs:float
xs:Double
xs: Duration
xs
: czas
xs:data
xs:gYearMonth
xs:gYear
xs:gMonthDay
xs:gDay
xs:gMonth
xs:hexBinary
xs:base64Binary
xs:anyURI
Obsługiwane typy pochodne
Są obsługiwane typy pochodne:
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 obsługuje także stała składanie dla wywołania funkcja budowy w następujący sposób:
Jeśli argument jest literał ciąg znaków, podczas kompilacji będą oceniane wyrażenie.Błąd statycznych jest wywoływane, gdy wartość nie spełnia ograniczenia typu.
Jeśli argument jest literałem innego typu, podczas kompilacji będą oceniane wyrażenie.Wartość nie spełnia ograniczenia typu, zwracany jest pusty sekwencji.
Przykłady
W tym temacie przedstawiono przykłady XQuery przeciwko wystąpień XML, które są przechowywane w różnych xml wpisz kolumn w AdventureWorks2008R2 bazy danych.Przegląd tych kolumn, zobacz XML reprezentacji typu danych w bazie danych AdventureWorks2008R2.
A.Używanie funkcja XQuery dateTime() do pobierania starsze opisy produktów
W tym przykładzie przykładowy dokument XML jest najpierw przypisany do xml typu zmiennej.Ten dokument zawiera trzy próbki <ProductDescription> elementów z każdym z nich zawierają <DateCreated> podrzędność elementu.
Zmienna jest następnie zbadać pobrać tylko te opisy produktów, które zostały utworzone przed określoną data.Do celów porównania w kwerendzie użyto xs:dateTime() funkcja konstruktora wpisanie daty.
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] ) } )
}
')
Poniższe z poprzedniej kwerendy:
DLA...Struktura pętli WHERE jest używana do pobierania <ProductDescription> element spełniający warunek określony w klauzula WHERE.
DateTime() funkcja konstruktora jest używana do konstruowania dateTime wpisz wartości, tak aby odpowiednio porównać.
Kwerenda konstruuje następnie wynikowa XML.Ponieważ są konstruowania kolejność atrybutów, przecinki i nawiasy są używane do budowy XML.
Jest to wynikiem:
<Product
ProductID="1"
DateCreated="2000-01-01T00:00:00Z"/>