Anasayfa / Yazılım / SQL / XML Metotları

XML Metotları

XML metotları ile XML veri tiplerini işleyebiliriz. XML metotları bize XML dokümanlarının güncellenmesini, XML verilerin rowset haline dönüştürülmesini ve diğer kullanışlı bir takım seçenekler sunar. Aşağıdaki tabloda bu metotları ve açıklamalarını yazdım.

2014042124

Şimdi bu metotlara sıra ile değinelim.

Query Metodu: Bir XMl veri tipinden elementleri ayıklayabilmek için query metodu kullanılır. Örnek olarak;

SELECT Demographics.query('declare namespace ss =
"http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/StoreSurvey";

') AS Result
FROM Sales.Store;

Bunun sonucu aşağıdaki gibi bir çıktı oluyor. Tamamını yazmıyorum.




...
...
...

Burada namespace diye bir kısım var onu açıklayalım. XML oldukça basittir ancak XML’i öğrenme aşamasında bu namespace biraz kafa karıştırmaktadır. XML’de benzersiz bir element ve attribute tanımlamak için namespace kullanılır.

Value Metodu: Value metodu XML veri tipi üzerinden SQL Scalar bir değer döndürülmesi için kullanılır. Value metodunda geriye döndürmek istediğimiz veriyi belirtebiliriz. Örnek olarak;

SELECT Demographics.value('declare namespace ss =
"http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/StoreSurvey";
(/ss:StoreSurvey/ss:BankName)[1]', 'varchar(100)') AS Result
FROM Sales.Store

Sonuç olarak aşağıdaki şekilde değer döndürülür.

2014042125

Exist Metodu: Bu yöntem XML verinin olup, olmadığını ya da NULL mu olduğunu kontrol eder. Eğer değer var ise TRUE geriye 1, değer yoksa FALSE geriye 0 ve değer NULL ise geriye NULL döner. Örneğimize bakalım:

SELECT Demographics.value('declare namespace ss =
"http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/StoreSurvey";
(/ss:StoreSurvey/ss:BankName)[1]', 'varchar(100)') AS LargeAnnualSales
FROM Sales.Store
WHERE Demographics.exist('declare namespace ss =
"http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/StoreSurvey";
/ss:StoreSurvey/ss:AnnualSales [. = 3000000]') = 1

Sonuç aşağıdaki gibi:

2014042126

Modify Metodu: XML veri tipi olarak saklanmış XML dokümanlarını düzenlemek için kullanılan metottur. SQL’de kullanılan UPDATE, DELETE, INSERT işlemlerine çok benzer. Tek farkı SET deyimi ile birlikte kullanılma zorunluluğudur. Kullanımına ilişkin örnekleri verirsek;

DECLARE @x xml =
'
Paper Towels
15
Johnson Paper
47
500
'
SELECT @x
/* XML'e INSERT ile data ekliyoruz */
SET @x.modify('
insert 77
into (/Product)[1]')
SELECT @x
/* XML'i güncelliyoruz */
SET @x.modify('
replace value of (/Product/QuantityOnHand[1]/text())[1]
with "250"')
SELECT @x
/* Burada da silme işlemi yapıyoruz */
SET @x.modify('
delete (/Product/Price)[1]')
SELECT @x

Node Metodu: Bu yöntem XML bir veri tipini bir rowset (tablo) içine dönüştürmek için kullanılır. Eğer bir XML’i ilişkisel bir forma dönüştürmek istiyor isek bu yöntemi kullanabiliriz.

SELECT Name,
SalesPersonID,
AnnualSales.query('.') AS XMLResult
FROM Sales.Store
CROSS APPLY
Demographics.nodes('declare namespace ss =
"http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/StoreSurvey";
/ss:StoreSurvey/ss:AnnualSales') AS NodeTable(AnnualSales)

Sonuç aşağıdaki gibidir:

2014042127

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir