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