Udostępnij za pośrednictwem


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"/>