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