FOR XML ile tablolarımızda yer alan verileri XML dokümanı haline getirebiliriz. FOR XML kullanımının en basit modu FOR XML RAW kullanımıdır. Yalnız bu mod çok az esneklik sağlamaktadır. Avantajı çok hızlı bir şekilde tablolardaki veriler içinden XML dokümanlarının oluşturulmasıdır. Örneklerle konumuza devam edelim, AdventureWorks2012 veritabanı üzerinde aşağıdaki sorguyu oluşturuyorum.
SELECT TOP 10 FirstName FROM Person.Person FOR XML RAW;
Sorgumu çalıştırdığımda aşağıdaki gibi bir sonuç alırım.
Sonuç üzerinde ilgili alana tıkladığımızda oluşan XML dokümanın içeriğini görebiliriz.
Görüleceği üzere her bir satırda tek bir element oluşmuş durumda. RAW modu attribute-centric moddur. Bir element altında birden fazla özellik listelemek için ise element-centric modunda sorgumuzu yazmamız gerekir, aşağıdaki sorguyu bu şekilde oluşturdum.
SELECT TOP 10 FirstName, LastName FROM Person.Person FOR XML RAW ('AdSoyad'), ELEMENTS
Sorgum sonucunda;
Linke tıkladığımızda sonucu görebiliriz:
Syed Abbas Catherine Abel Kim Abercrombie Kim Abercrombie Kim Abercrombie Hazem Abolrous Sam Abolrous Humberto Acevedo Gustavo Achong Pilar Ackerman
Bu sorgumda her bir element için AdSoyad düğümünü tanımladım.
FOR XML RAW modunda her iki yöntem olmasına rağmen aslında tüm ihtiyaçlarımızı karşılamıyor. Komplex XML dokümanlar oluşturmamızda eksik kalan yanları mevcuttur. Dolayısı ile basit XML dokümanları oluşturmak için tercih edilir. Daha karmaşık XML dokümanları elde etmek için diğer modların tercih edilmesi daha uygun olacaktır.
Merhaba,
SELECT CONVERT(NVARCHAR(MAX),
(SELECT (select dbo.trk1(f.BolgeAdi)) +’ – ‘+f.AracTanim AS li,
(SELECT (‘|| sH Çiğ :’+convert(varchar,g.SH_Cig) +’ || ‘+ ‘sH Kayn :’+convert(varchar,g.sh_Kayn) + ‘ || ‘+ ‘sH Kayn :’+convert(varchar,g.pH) + ‘ || ‘ + ‘pH :’+convert(varchar,g.Yag_Yuzde) +’ || ‘+ ‘Km :’+convert(varchar,g.Yagsiz_KM) +’ || ‘ + ‘Su :’+convert(varchar,g.CRY_Su) +’ || ‘+ ‘Prot :’+convert(varchar,g.Protein) +’ || ‘ + ‘Sonuç :’+convert(varchar,g.Sonuc) +’ || ‘+ ‘Göz :’+convert(varchar,g.AracGozu) +’ || ‘) AS li FROM HLV_HTML_ANALIZLER g WITH (NOLOCK) WHERE TARIH = @TARIH AND g.BolgeId = f.BolgeId AND g.arackod = f.arackod
FOR XML RAW(”), ROOT(‘ul’), ELEMENTS, TYPE )
FROM HLV_HTML_ANALIZLER f WHERE TARIH = @TARIH
–group by f.BolgeId, f.BolgeAdi,f.Arackod,f.AracTanim
group by f.BolgeId, f.BolgeAdi,f.Arackod,f.AracTanim
order by BOLGEID,ARACKOD
FOR XML RAW(‘ul’), ROOT(‘ul’), ELEMENTS, TYPE ))
Şeklinde bir sorgum var. Burada ul ve li ler için css kodu vermek istiyorum. Nasıl yapabileceğim noktasında hiçbir kaynak bulamadım. Yardımcı olmanız mümkün mü ?