Aracılığıyla paylaş


Oluşturucu işlevler (XQuery)

Belirtilen bir girişten Oluşturucu işlevler xsd yerleşik veya kullanıcı tanımlı atomik türleri yaratmak.

Sözdizimi


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

Bağımsız değişkenler

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

  • TYP
    Yerleşik herhangi bir xsd türü.

Açıklamalar

Kurucular, temel ve türetilmiş atomik xsd türleri için desteklenir. Ancak, alt xs: duration, içeren xdt:yearMonthDuration ve xdt:dayTimeDuration, ve QNamesendikaya, xs:NMTOKEN, ve xs:NOTATION desteklenmez. İlişkili şema koleksiyonları içinde kullanılabilen atomik kullanıcı tanımlı türleri de onlar doğrudan veya dolaylı olarak elde edilen aşağıdaki türlerden sağlanan kullanılabilir.

Desteklenen temel türleri

Desteklenen temel türleri şunlardır:

  • xs

  • 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

  • anyURI

Desteklenen Türetilen türler

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

  • xs:normalizedString

  • xs:Token

  • xs:language

  • xs:Name

  • xs

  • 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 fonksiyon çağırmaları için aşağıdaki şekillerde katlama destekler:

  • Bağımsız değişken bir dize ise, ifade derleme sırasında değerlendirilir. Değer türü kısıtlamaları tatmin etmez, statik bir hata oluşur.

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

Örnekler

Bu konu çeşitli depolanan xml örnekleri karşı XQuery örnekler sağlar xml AdventureWorks veritabanındaki sütunları yazın. Bu sütunlar genel bakış için bkz: DEL - xml Data Type Representation in the AdventureWorks2008R2 Database.

A.Eski ürün açıklamaları almak için dateTime() XQuery işlevini kullanma

Örneğin, örnek bir xml belgesi ilk atanan bir xml türü değişkeni. Bu belge üç örnek içeren <ProductDescription> öğeleriyle içeren her biri bir <DateCreated> alt öğe.

Değişken, sonra yalnızca belirli bir tarihten önce oluşturulan ürün açıklamaları almak için sorgulanır. Karşılaştırma amaçları için sorgu kullanır xs:dateTime() yapıcı işlevi tarihleri yazın.

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

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... NEREDE döngü yapısı almak için kullanılan <ProductDescription> where yan tümcesinde belirtilen koşula uyan öğe.

  • DateTime() yapıcı işlevi oluşturmak için kullanılan dateTime uygun karşılaştırılabilir şekilde değerleri yazın.

  • Sorguyu daha sonra sonuç xml oluşturur. Özniteliklerin sırası yapılandırırlar, virgüller ve parantezler xml yapımında kullanılır.

Sonuç şudur:

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

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

Ayrıca bkz.

Başvuru

Xml veri türü karşı XQuery işlevleri

Kavramlar

xml yapım (XQuery)