Bagikan melalui


Fungsi Ekstensi XQuery - sql:variable()

Berlaku untuk:SQL Server

Mengekspos variabel yang berisi nilai relasional SQL di dalam ekspresi XQuery.

Sintaks

  
sql:variable("variableName") as xdt:anyAtomicType?  

Keterangan

Seperti yang dijelaskan dalam topik Mengikat Data Relasional Di dalam XML, Anda dapat menggunakan fungsi ini saat menggunakan metode tipe data XML untuk mengekspos nilai relasional di dalam XQuery.

Misalnya, metode query() digunakan untuk menentukan kueri terhadap instans XML yang disimpan dalam variabel atau kolom jenis data xml . Terkadang, Anda mungkin juga ingin kueri Anda menggunakan nilai dari variabel Transact-SQL, atau parameter, untuk menyatukan data relasional dan XML. Untuk melakukan ini, Anda menggunakan fungsi sql:variable .

Nilai SQL akan dipetakan ke nilai XQuery yang sesuai dan jenisnya akan menjadi jenis dasar XQuery yang setara dengan jenis SQL yang sesuai.

Anda hanya dapat merujuk ke instans xml dalam konteks ekspresi sumber pernyataan penyisipan XML-DML; jika tidak, Anda tidak dapat merujuk ke nilai jenis xml atau jenis yang ditentukan pengguna runtime bahasa umum (CLR).

Contoh

J. Menggunakan fungsi sql:variable() untuk membawa nilai variabel Transact-SQL ke DALAM XML

Contoh berikut membuat instans XML yang terdiri dari yang berikut ini:

  • Nilai (ProductID) dari kolom non-XML. Fungsi sql:column() digunakan untuk mengikat nilai ini dalam XML.

  • Nilai (ListPrice) dari kolom non-XML dari tabel lain. Sekali lagi, sql:column() digunakan untuk mengikat nilai ini dalam XML.

  • Nilai (DiscountPrice) dari variabel Transact-SQL. Metode sql:variable() ini digunakan untuk mengikat nilai ini ke dalam XML.

  • Nilai (ProductModelName) dari kolom jenis xml , untuk membuat kueri lebih menarik.

Ini adalah kueri:

DECLARE @price money  
  
SET @price=2500.00  
SELECT ProductID, Production.ProductModel.ProductModelID,CatalogDescription.query('  
declare namespace pd="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";  
  
       <Product   
           ProductID="{ sql:column("Production.Product.ProductID") }"  
           ProductModelID= "{ sql:column("Production.Product.ProductModelID") }"  
           ProductModelName="{/pd:ProductDescription[1]/@ProductModelName }"  
           ListPrice="{ sql:column("Production.Product.ListPrice") }"  
           DiscountPrice="{ sql:variable("@price") }"  
        />')   
FROM Production.Product   
JOIN Production.ProductModel  
ON Production.Product.ProductModelID = Production.ProductModel.ProductModelID  
WHERE ProductID=771  

Perhatikan hal berikut ini dari kueri sebelumnya:

  • XQuery di query() dalam metode membuat XML.

  • Kata namespace kunci digunakan untuk menentukan awalan namespace di XQuery Prolog. Ini dilakukan karena ProductModelName nilai atribut diambil dari CatalogDescription xml kolom jenis, yang memiliki skema yang terkait dengannya.

Ini adalah hasilnya:

<Product ProductID="771" ProductModelID="19"   
         ProductModelName="Mountain 100"   
         ListPrice="3399.99" DiscountPrice="2500" />  

Lihat Juga

Fungsi Ekstensi XQuery SQL Server
Membandingkan XML Yang Dititik dengan XML Yang Tidak Dititik
XML Data (SQL Server)
Membuat Instans Data XML
Metode Tipe Data xml
Bahasa Modifikasi Data XML (XML DML)