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.
Bir XQuery ifadesi içinde SQL ilişkisel değeri içeren bir değişkeni ortaya çıkarır.
Syntax
sql:variable("variableName") as xdt:anyAtomicType?
Remarks
Binding Relation Data Within XML başlıklı bölümde açıklandığı gibi, XML veri tipi metodlarını kullanarak XQuery içinde ilişkisel bir değer ortaya çıkardığınızda bu fonksiyonu kullanabilirsiniz.
Örneğin, query() yöntemi , bir xml veri tipi değişkeninde veya sütununda saklanan bir XML örneğine karşı sorgu belirtmek için kullanılır. Bazen, sorgunuz Transact-SQL değişken veya parametreden alınan değerleri kullanarak ilişkisel ve XML verilerini bir araya getirmesini de isteyebilirsiniz. Bunu yapmak için sql:variable fonksiyonunu kullanırsınız.
SQL değeri karşılık gelen bir XQuery değerine eşlenir ve türü ilgili SQL türüne eşdeğer bir XQuery temel türü olur.
Bir xml örneğine yalnızca XML-DML insert ifadesinin kaynak ifadesi bağlamında başvurabilirsiniz; aksi takdirde XML tipine veya ortak dil çalışma zamanı (CLR) kullanıcı tanımlı bir türde değerlere başvuramazsınız.
Examples
A. sql:variable() fonksiyonunu kullanarak Transact-SQL değişken değerini XML'e getirmek
Aşağıdaki örnek, aşağıdakilerden oluşan bir XML örneği oluşturur:
XML olmayan bir sütundan bir değer (
ProductID) olarak belirtilir. sql:column() fonksiyonu, bu değeri XML'de bağlamak için kullanılır.Başka bir tablodan XML olmayan bir sütundan alınan bir değer (
ListPrice). Yine,sql:column()bu değeri XML'de bağlamak için kullanılır.Bir Transact-SQL değişkeninden bir değer (
DiscountPrice). Bu yöntem,sql:variable()bu değeri XML'e bağlamak için kullanılır.Sorguyu daha ilginç kılmak için xml tipi bir sütundan bir değer (
ProductModelName) verebilirsiniz.
Bu sorgudur:
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
Önceki sorgudan aşağıdakilere dikkat edin:
Metodun
query()içindeki XQuery XML'i oluşturur.Bu anahtar kelime,
namespaceXQuery Prolog'unda bir namespace preeki tanımlamak için kullanılır. Bu,ProductModelNameöznitelik değerinin, kendisine ilişkili bir şema olan tip sütunundan alınmasıCatalogDescription xmlnedeniyle yapılır.
Sonuç şu şekildedir:
<Product ProductID="771" ProductModelID="19"
ProductModelName="Mountain 100"
ListPrice="3399.99" DiscountPrice="2500" />
İlgili içerik
- XQuery Uzantı Fonksiyonları - sql:column()
- Yazılan XML ile yazılmamış XML karşılaştırma
- XML verileri (SQL Server)
- XML veri örnekleri oluşturun
- xml Veri Türü Yöntemleri
- XML Veri Değiştirme Dili (XML DML)