Sdílet prostřednictvím


Funkce konstruktoru (XQuery)

platí pro:SQL Server

Ze zadaného vstupu vytvářejí funkce konstruktoru instance libovolného předdefinovaného nebo uživatelem definovaného atomických typů XSD.

Syntax

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

Argumenty

$strval
Řetězec, který bude převeden.

typ
Libovolný integrovaný typ XSD.

Poznámky

Konstruktory jsou podporovány pro základní a odvozené atomické typy XSD. Podtypy xs:duration, které zahrnují xdt:yearMonthDuration a xdt:dayTimeDurationa xs:QName, xs:NMTOKENa xs:NOTATION nejsou podporované. K dispozici jsou také uživatelem definované atomické typy, které jsou k dispozici v přidružených kolekcích schémat, za předpokladu, že jsou přímo nebo nepřímo odvozeny z následujících typů.

Podporované základní typy

Toto jsou podporované základní typy:

  • 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

Podporované odvozené typy

Toto jsou podporované odvozené typy:

  • 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 také podporuje konstantní posouvání pro vyvolání stavebních funkcí následujícími způsoby:

  • Pokud je argument řetězcovým literálem, výraz se vyhodnotí během kompilace. Pokud hodnota nevyhovuje omezením typu, vyvolá se statická chyba.

  • Pokud je argument literálem jiného typu, výraz se vyhodnotí během kompilace. Pokud hodnota nevyhovuje omezením typu, vrátí se prázdná sekvence.

Příklady

Toto téma obsahuje příklady XQuery pro instance XML, které jsou uloženy v různých xml sloupce typu v databázi AdventureWorks.

A. Použití funkce dateTime() XQuery k načtení starších popisů produktů

V tomto příkladu je ukázkový dokument XML nejprve přiřazen k proměnné typu xml. Tento dokument obsahuje tři ukázkové <ProductDescription> prvky, přičemž každý z nich obsahuje podřízený prvek <DateCreated>.

Proměnná se pak dotazuje, aby načetla pouze popisy produktů, které byly vytvořeny před konkrétním datem. Pro účely porovnání použije dotaz k zadání kalendářních dat funkci xs:dateTime() konstruktoru.

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

Všimněte si následujících věcí z předchozího dotazu:

  • For ... Struktura smyčky WHERE se používá k načtení <ProductDescription> prvek splňující podmínku uvedenou v klauzuli WHERE.

  • Funkce konstruktoru dateTime() slouží k vytvoření hodnot typu dateTime, aby je bylo možné porovnat odpovídajícím způsobem.

  • Dotaz pak vytvoří výsledný KÓD XML. Vzhledem k tomu, že vytváříte posloupnost atributů, čárky a závorky se používají ve konstrukci XML.

Toto je výsledek:

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

Viz také

KONSTRUKCE XML (XQuery)
funkce XQuery proti datového typu XML