Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Belirli bir girdiden, yapıcı fonksiyonlar XSD yerleşik veya kullanıcı tanımlı atomik tiplerden herhangi birinin örneklerini oluşturur.
Syntax
TYP($atomicvalue as xdt:anyAtomicType?
) as TYP?
Arguments
$strval
Dönüştürülecek bir ip.
TYP
Herhangi bir dahili XSD türü.
Remarks
Yapıcılar, temel ve türemiş atomik XSD türleri için desteklenir. Ancak, xdt:yearMonthDuration ve xdt:dayTimeDuration ile xs:QName, xs:NMTOKEN ve xs:NOTATION gibi xs:duration alt türleri desteklenmemektedir. İlgili şema koleksiyonlarında bulunan kullanıcı tanımlı atom tipleri de doğrudan veya dolaylı olarak aşağıdaki türlerden türetildikleri sürece mevcuttur.
Desteklenen baz tipleri
Desteklenen taban tipleri şunlardır:
xs:string
xs:boolean
xs:ondalık
xs:float
xs:double
xs:süre
xs:dateTime
xs:time
xs:date
xs:gYearMonth
xs:gYear
xs:gMonthDay
xs:gDay
xs:gMonth
xs:hexBinary
xs:base64Binary
xs:anyURI
Desteklenen Türemiş Tipler
Desteklenen türeme türleri şunlardır:
xs:normalizedString
xs:token
xs:dil
xs:Adı
xs:NCName
xs:ID
xs:IDREF
xs:ENTITY
xs:tamsayı
xs:nonPositiveInteger
xs:negativeInteger
xs:long
xs:int
xs:short
xs:byte
xs:nonNegativeInteger
xs:unsignedLong
xs:unsignedInt
xs:unsignedShort
xs:imzasızBayt
xs:positiveInteger
SQL Server ayrıca fonksiyon oluşturma çağrıları için sürekli katlamayı aşağıdaki şekillerde destekler:
Eğer argüman bir string literal ise, ifade derleme sırasında değerlendirilir. Değer tür kısıtlamalarını karşılamadığında, statik bir hata oluşur.
Eğer argüman başka bir türde bir literal ise, ifade derleme sırasında değerlendirilir. Değer tür kısıtlamalarını karşılamadığında, boş dizi döner.
Examples
Bu konu, AdventureWorks veritabanındaki çeşitli xml türü sütunlarında depolanan XML örneklerine karşı XQuery örnekleri sağlar.
A. dateTime() XQuery fonksiyonunu kullanarak eski ürün tanımlarını elde etmek
Bu örnekte, örnek bir XML belgesi önce bir xml tür değişkenine atanır. Bu belge, her biri bir <DateCreated> alt öğe içeren üç örnek <ProductDescription> öğe içerir.
Değişken daha sonra yalnızca belirli bir tarihten önce oluşturulmuş ürün açıklamalarını almak için sorgulanır. Karşılaştırma amacıyla, sorgu tarihleri yazmak için xs:dateTime() yapıcı fonksiyonunu kullanır.
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:
FOR ... WHERE döngü yapısı, WHERE maddesinde belirtilen koşulu sağlayan ProductDescription> öğesini almak <için kullanılır.
dateTime() yapıcı fonksiyonu, dateTime türü değerleri oluşturmak için kullanılır, böylece bunlar uygun şekilde karşılaştırılabilir.
Sorgu daha sonra ortaya çıkan XML'i oluşturur. Bir öznitelik dizisi oluşturduğunuz için, XML yapısında virgül ve parantez kullanılır.
Sonuç şu şekildedir:
<Product
ProductID="1"
DateCreated="2000-01-01T00:00:00Z"/>