Fungsi Konstruktor (XQuery)

Berlaku untuk:SQL Server

Dari input tertentu, fungsi konstruktor membuat instans dari salah satu jenis atom XSD bawaan atau yang ditentukan pengguna.

Sintaks

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

Argumen

$strval
String yang akan dikonversi.

TYP
Jenis XSD bawaan apa pun.

Keterangan

Konstruktor didukung untuk jenis XSD atom dasar dan turunan. Namun, subjenis xs:duration, yang mencakup xdt:yearMonthDuration dan xdt:dayTimeDuration, dan xs:QName, xs:NMTOKEN, dan xs:NOTATION tidak didukung. Jenis atom yang ditentukan pengguna yang tersedia dalam koleksi skema terkait juga tersedia, asalkan secara langsung atau tidak langsung berasal dari jenis berikut.

Jenis Dasar yang Didukung

Ini adalah jenis dasar yang didukung:

  • xs:string

  • xs:boolean

  • xs:decimal

  • xs:float

  • xs:double

  • xs:duration

  • xs:dateTime

  • xs:waktu

  • xs:date

  • xs:gYearMonth

  • xs:gYear

  • xs:gMonthDay

  • xs:gDay

  • xs:gMonth

  • xs:hexBinary

  • xs:base64Binary

  • xs:anyURI

Jenis Turunan yang Didukung

Ini adalah jenis turunan yang didukung:

  • 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 juga mendukung pelipatan konstan untuk pemanggilan fungsi konstruksi dengan cara berikut:

  • Jika argumen adalah string literal, ekspresi akan dievaluasi selama kompilasi. Ketika nilai tidak memenuhi batasan jenis, kesalahan statis dimunculkan.

  • Jika argumen adalah harfiah dari jenis lain, ekspresi akan dievaluasi selama kompilasi. Ketika nilai tidak memenuhi batasan jenis, urutan kosong dikembalikan.

Contoh

Topik ini menyediakan contoh XQuery terhadap instans XML yang disimpan di berbagai kolom jenis xml di database AdventureWorks.

J. Menggunakan fungsi dateTime() XQuery untuk mengambil deskripsi produk yang lebih lama

Dalam contoh ini, contoh dokumen XML pertama kali ditetapkan ke variabel jenis xml . Dokumen ini berisi tiga elemen sampel<ProductDescription>, dengan masing-masing elemen yang berisi elemen turunan.<DateCreated>

Variabel kemudian dikueri untuk hanya mengambil deskripsi produk yang dibuat sebelum tanggal tertentu. Untuk tujuan perbandingan, kueri menggunakan fungsi konstruktor xs:dateTime() untuk mengetik tanggal.

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

Perhatikan hal berikut ini dari kueri sebelumnya:

  • UNTUK ... Struktur perulangan WHERE digunakan untuk mengambil <elemen ProductDescription> yang memenuhi kondisi yang ditentukan dalam klausa WHERE.

  • Fungsi konstruktor dateTime() digunakan untuk membuat nilai jenis dateTime sehingga dapat dibandingkan dengan tepat.

  • Kueri kemudian membuat XML yang dihasilkan. Karena Anda membuat urutan atribut, koma dan tanda kurung digunakan dalam konstruksi XML.

Ini adalah hasilnya:

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

Lihat Juga

Konstruksi XML (XQuery)
Fungsi XQuery terhadap Tipe Data xml