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. Metodesql: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 karenaProductModelName
nilai atribut diambil dariCatalogDescription 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)