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.
XQuery birincil ifadeleri literaller, değişken referansları, bağlam öğesi ifadeleri, yapıcılar ve fonksiyon çağrılarını içerir.
Literals
XQuery literalallar sayısal veya dizi literalleri olabilir. Bir dize literali önceden tanımlanmış varlık referanslarını içerebilir ve varlık referansı ise bir karakter dizisidir. Dizi, aksi takdirde sözdizimsel anlamı olabilecek tek bir karakteri temsil eden bir ampersand ile başlar. Aşağıda XQuery için önceden tanımlanmış varlık referansları yer almaktadır.
| Varlık referansı | Temsil eder |
|---|---|
< |
< |
> |
> |
& |
& |
" |
" |
' |
' |
Bir dize literali ayrıca, ondalık veya onaltılık kod noktasıyla tanımlanan bir karakter referansı, yani XML tarzı bir Unicode karakter referansı içerebilir. Örneğin, Euro sembolü "€" karakter referansıyla temsil edilebilir.
Note
SQL Server, ayrıştırma için XML sürüm 1.0'ı temel alır.
Examples
Aşağıdaki örnekler, kelime harimlerinin ve ayrıca varlık ile karakter referanslarının kullanımını göstermektedir.
Bu kod hata döndürür, çünkü <' ve '> karakterleri özel bir anlama sahiptir.
DECLARE @var XML
SET @var = ''
SELECT @var.query(' <SalaryRange>Salary > 50000 and < 100000</SalaryRange>')
GO
Bunun yerine bir varlık referansı kullanırsanız, sorgu çalışır.
DECLARE @var XML
SET @var = ''
SELECT @var.query(' <SalaryRange>Salary > 50000 and < 100000</SalaryRange>')
GO
Aşağıdaki örnek, Euro sembolünü temsil etmek için bir karakter referansının kullanımını göstermektedir.
DECLARE @var XML
SET @var = ''
SELECT @var.query(' <a>€12.50</a>')
Sonuç budur.
<a>€12.50</a>
Aşağıdaki örnekte, sorgu apostroflarla sınırlandırılmıştır. Bu nedenle, dizi değerindeki apostrof iki bitişik apostrof ile temsil edilir.
DECLARE @var XML
SET @var = ''
SELECT @var.query('<a>I don''t know</a>')
Go
Sonuç budur.
<a>I don't know</a>
Yerleşik Boolean fonksiyonları, true() ve false(), aşağıdaki örnekte gösterildiği gibi Boolean değerlerini temsil etmek için kullanılabilir.
DECLARE @var XML
SET @var = ''
SELECT @var.query('<a>{true()}</a>')
GO
Doğrudan eleman oluşturucu, kıvırcıl desteklerde bir ifade belirtir. Bu, ortaya çıkan XML'deki değeriyle değiştirilir.
Sonuç budur.
<a>true</a>
Değişken Referanslar
XQuery'deki değişken referansı, $ işaretinin önündeki bir QName'dir. Bu uygulama yalnızca öneksiz değişken referanslarını destekler. Örneğin, aşağıdaki sorgu FLWOR ifadesindeki değişkeni $i tanımlar.
DECLARE @var XML
SET @var = '<root>1</root>'
SELECT @var.query('
for $i in /root return data($i)')
GO
Aşağıdaki sorgu çalışmaz çünkü değişken adına bir isim alanı öneki eklenmiştir.
DECLARE @var XML
SET @var = '<root>1</root>'
SELECT @var.query('
DECLARE namespace x="https://X";
for $x:i in /root return data($x:i)')
GO
SQL değişkenlerine atıfta bulunmak için sql:variable() uzantı fonksiyonunu kullanabilirsiniz, aşağıdaki sorguda gösterildiği gibi.
DECLARE @price money
SET @price=2500
DECLARE @x xml
SET @x = ''
SELECT @x.query('<value>{sql:variable("@price") }</value>')
Sonuç budur.
<value>2500</value>
Uygulama Sınırlamaları
Uygulama sınırlamaları şunlardır:
Isim alanı önekli değişkenler desteklenmez.
Modül içe aktarma desteklenmiyor.
Harici değişken bildirimleri desteklenmez. Bunun çözümü sql:variable() fonksiyonunu kullanmaktır.
Bağlam Öğe İfadeleri
Bağlam öğesi, şu anda bir yol ifadesi bağlamında işlenen öğedir. Belge düğümüyle birlikte NULL olmayan bir XML veri tipi örneğinde başlatılır. Ayrıca, XPath ifadeleri veya [] yüklemleri bağlamında nodes() yöntemiyle de değiştirilebilir.
Bağlam öğesi, bir nokta (.) içeren bir ifadeyle döner. Örneğin, aşağıdaki sorgu, her bir öğeyi <a> özniteliğin attrvarlığı açısından değerlendirir. Özellik varsa, öğe geri döner. Önlemdeki koşul, bağlam düğümünün tek bir nokta ile belirlendiğini belirtir.
DECLARE @var XML
SET @var = '<ROOT>
<a>1</a>
<a attr="1">2</a>
</ROOT>'
SELECT @var.query('/ROOT[1]/a[./@attr]')
Sonuç budur.
<a attr="1">2</a>
Fonksiyon Çağrıları
Yerleşik XQuery fonksiyonlarını ve SQL Server'ın sql:variable() ve sql:column() fonksiyonlarını çağırabilirsiniz. Uygulanan fonksiyonların listesi için bkz. XQuery Fonksiyonları xml Veri Tipine karşı.
Uygulama Sınırlamaları
Uygulama sınırlamaları şunlardır:
XQuery prologunda fonksiyon bildirmesi desteklenmemektedir.
Fonksiyon içe aktarma desteklenmiyor.