Aracılığıyla paylaş


Oluşturucu işlevler (XQuery)

Belirtilen bir girişten yapıcı işlevlerine türlerinden herhangi birini xsd yerleşik veya kullanıcı tanımlı Atomik yaratmak.

Sözdizimi


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

Bağımsız değişkenler

  • $strval
    Dönüştürülecek dize.

  • YAZ
    Yerleşik herhangi xsd türü.

Açıklamalar

Kurucular için temel ve türetilmiş Atomik xsd türleri desteklenir.Bununla birlikte, grafik alt türlerinden birini xs: Duration, içeren xdt:yearMonthDuration ve xdt:dayTimeDuration, ve xs:QName, xs:NMTOKEN, ve xs:NOTATION desteklenmez.İlişkili şema koleksiyonları içinde kullanılabilen kullanıcı tanımlı Atomik türleri de bunların doğrudan veya dolaylı olarak aşağıdaki türlerinden türetilmiþ koşuluyla kullanılabilir.

Desteklenen temel türleri

Desteklenen temel türleri şunlardır:

  • Xs:dize

  • Xs:Boolean

  • Xs:decimal

  • Xs:float

  • Xs:double

  • Xs: Duration

  • Xs

  • Xs: saat

  • Xs:tarih

  • Xs:gYearMonth

  • Xs:gYear

  • Xs:gMonthDay

  • Xs:gDay

  • Xs:gMonth

  • Xs:hexBinary

  • Xs:base64Binary

  • Xs:anyURI

Desteklenen türetilmiş türleri

Desteklenen türetilen türler şunlardır:

  • 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 ayrıca sabit inşaat işlev çağırmaları için aşağıdaki şekillerde Katlama destekler:

  • Bağımsız değişken bir dize hazır bilgi ise, derleme sırasında ifade değerlendirilecek.Değer türü kısıtlamaları karşılayamıyorsa, statik bir hata ortaya çıkar.

  • Bağımsız değişken bir hazır bilgi başka bir türü ise, derleme sırasında ifade değerlendirilecek.Değer türü kısıtlamaları karşılayamıyorsa, boş sırası döndürülür.

Örnekler

Bu konuda çeşitli içinde depolanan xml örnekleri karşı XQuery örnekler sağlar xml sütunları yazın AdventureWorks2008R2 veritabanı.Bir bakış bu sütunların her biri için bkz: XML veri türü temsili AdventureWorks2008R2 veritabanında.

A.DateTime() XQuery kullanarak işlev eski ürün açıklamaları almak için

Bu örnekte, örnek bir xml belgesi ilk atanan bir xml türü değişkeni.Bu belge üç örnek içeren <ProductDescription> öğeleri içeren her biri ile bir <DateCreated> alt öğesi.

Değişken daha sonra yalnızca belirli bir önce oluşturulan ürün açıklamaları almak için sorgulanan tarih.Karşılaştırma amacıyla, sorguyu kullanır xs:dateTime() kurucusu işlev tarih yazmak için.

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

Önceki sorgudan aşağıdakilere dikkat edin:

  • İÇİN...Döngü yapısı nerede almak için kullanılan <ProductDescription> karşılanması koşul öğesi belirtilen where yan tümce tümce tümce.

  • The dateTime() constructor function is used to construct dateTime type values so they can be compared appropriately.

  • Sorguyu daha sonra ortaya çıkan xml oluşturur.Bir öznitelik sırası oluşturmak yoluyla, virgüller ve parantezler içinde xml yapım kullanılır.

Bu sonucu verir:

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