MSSQL For Xml Path kullanımı

  • 15.9.2015
  • tayyipyetis
  • MSSQL

Merhaba, bu makalede mssql üzerinde bir çok işlemimizi kolaylaştıracak pratik bir yöntemden bahsedeceğim. For Xml Path Sql sonuçlarının xml formatında gösterilmesini sağlayan bir sözdizimidir. herhangi bir sorgunun sonuna yazıldığında belirtilen sütunları xml düğümlerine çevirerek tek bir satırda gösterir. işimizi kolaylaştıran yönüde budur. bazen kod tarafındaki yükümüzü azaltmak için bazı işlemleri veritabanında halletmek isteyebiliriz örneğin basit veri listelemelerinde repeater vb. listeleme elemanları kullanıp kodu çoğaltmak yerine sql üzerinde de yapabiliriz. Örnek kullanımı inceleyin

SELECT isim + ',' FROM urunler FOR XML PATH('')

yukarıdaki kullanımda Path fonksiyonuna parametre vermediğim ve sütun sonuna virgül eklediğim için ürün adlarını virgülle ayırarak sonuç üretecektir.

XML_F52E2B61-18A1-11d1-B105-00805F49916B
bilgisayar,tablet,telefon,kulaklık,hoparlör,klavye,mouse,kamera,mikrofon,monitör

 

Eğer virgül kullanmasaydık sütunun ismi yazacaktı birden fazla sütun kullansaydık hepsi ayrı ayrı yazacaktı.

SELECT isim FROM urunler FOR XML PATH('')
XML_F52E2B61-18A1-11d1-B105-00805F49916B
<isim>bilgisayar</isim><isim>tablet</isim><isim>telefon</isim><isim>kulaklık...

 

Eğer path fonksiyonunun içine bir parametre yazarsanız yazdığınız parametreye göre düğüm oluşturacaktır. Dikkatinizi çektiyse sonuç tablosunda başlık ismi XML ile başlayan karmaşık ifadeler içeren ve rastgele oluşturulan bir string değer eğer bunu AS ifadesi kullanarak değiştirmeye çalıştıysanız muhtmelen hata almışsınızdır. çünkü for xml path kullanılarak oluşturulan tablonun sütun ismine aynı sorguda müdahele edemiyorsunuz. bunun için içiçe SELECT yöntemini kullanabilirsiniz

SELECT(SELECT isim + ','  FROM urunler FOR XML PATH('')) AS orneksutun
orneksutun
bilgisayar,tablet,telefon,kulaklık,hoparlör,klavye,mouse,kamera,mikrofon,monitör

 

Bu şekilde For Xml Path kullanarak bir tabloyu tek bir sütunda gösterip projelerinizde extra listeleme masrafına girmemiş olursunuz özellikle CROSS APPLY kullanarak diğer sorgularınızla da birleşik olarak kullanabilirsiniz. Herkese faydalı olması dileğiyle...

Mustafa Tayyip YETİŞ
Yazılım Geliştirme Uzmanı

Yorum Gönder

Diğer Makaleler

Etiketler