Funkcje Konstruktora (XQuery)
Określone dane wejściowe funkcje konstruktora utworzyć wystąpień każdego typu XSD wbudowanej lub zdefiniowanej przez użytkownika niepodzielny.
TYP($atomicvalue as xdt:anyAtomicType?
) as TYP?
Argumenty
$ strval
Ciąg znaków, które mają być poddane konwersji.TYP
Dowolny wbudowany typ XSD.
Remarks
Konstruktory są obsługiwane dla podstawowego i pochodny niepodzielny typów XSD.Jednak podtypów z xs:Duration, która obejmuje XDT:yearMonthDuration i xdt:dayTimeDuration, and xs:QName, xs:NMTOKEN, and xs:NOTATION nie są obsługiwane.W przypadku typów zdefiniowanych przez użytkownika niepodzielny dostępne w kolekcji skojarzony schemat dostępne są także, pod warunkiem, że bezpośrednio lub pośrednio pochodzą z następujących typów.
Obsługiwane typy podstawowe
Oto obsługiwane typy podstawowe:
xs:ciąg
xs:logiczny
xs:decimal
xs:float
xs:Double
xs:Duration
xs:dateTime
xs:czas
xs
xs:gYearMonth
xs:gYear
xs:gMonthDay
xs:gDay
xs:gMonth
xs:hexBinary
xs:base64Binary
xs:anyURI
Obsługiwane typy pochodne
Oto obsługiwane typy pochodne:
xs:normalizedString
xs:token
xs:Language
xs:Name
xs:NCName
xs: ID
xs:IDREF
xs:obiekt
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
Program SQL Server obsługuje także stała składanie dla wywołania funkcja konstrukcji w następujący sposób:
Jeśli argument jest literał ciąg znaków, wyrażenie będą oceniane podczas kompilacji.Jeśli wartość nie spełnia ograniczenia typu, błąd statycznego zostanie zaokrąglona.
Jeśli argument jest literałem innego typu, wyrażenie będą oceniane podczas kompilacji.Wartość nie spełnia ograniczenia typu, zwracany jest pusty sekwencji.
Przykłady
W tym temacie przedstawiono przykłady XQuery przed XML wystąpienia, które są przechowywane w różnych XML typu kolumny bazy danych AdventureWorks.Aby uzyskać ogólne informacje o każdej z tych kolumn zobacz xml Data Type Representation in the AdventureWorks Database.
A.Za pomocą funkcja XQuery dateTime() pobrać starsze opisy produktów
W tym przykładzie przykładowy dokument XML jest najpierw przypisany do XML typu zmiennej.Ten dokument zawiera trzy przykłady <ProductDescription> elementy z każdego z nich, które zawierają <DateCreated> element podrzędność.
Zmienna jest następnie proszeni o pobierać tylko te opisy produktów, które zostały utworzone przed określoną data.W celu porównania, używanych przez kwerendę xs:dateTime() Konstruktor 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] ) } )
}
')
Pierwszy przycisk jest przyciskiem domyślnym.
FOR...Struktura pętli WHERE jest używana do pobierania <ProductDescription> element spełniający warunek określony w klauzula WHERE.
The dateTime() constructor funkcja is used to construct dateTime type values so they can be compared appropriately.
Kwerendy konstruuje następnie wynikowego pliku XML.Ponieważ są tworzenia sekwencji atrybutów, przecinki i nawiasy są używane do budowy XML.
To jest wynik:
<Product
ProductID="1"
DateCreated="2000-01-01T00:00:00Z"/>