SQL Server’da XML Oluşturan Fonksiyon Yazmak ve Bu Fonksiyonu Kullanarak Tabloya Veri Eklemek
Herkese merhaba,
Bu yazıda SQL Server’da XML oluşturan fonksiyon yazmak ve bu fonksiyonu kullanarak tabloya veri eklemek ile ilgili bilgi vermeye çalışacağım.
SQL Server’da bazı durumlarda elinizde XML verisi olabilir ve bu XML verisini parse eden bir fonksiyon yazarak tabloya veri ekleme işlemi yapmak isteyebilirsiniz.
İlk önce elimizdeki XML dosyasının aşağıdaki gibi olduğunu düşünelim.
Bu örnekte, “People” adlı bir üst düzey öğe ve “Person” adlı alt öğeleri olan bir XML verisi var. XML verisindeki her bir “Person” öğesi bir tablo satırını temsil eder.
<People>
<Person>
<Name>John Smith</Name>
<Age>35</Age>
<City>New York</City>
</Person>
<Person>
<Name>Jane Doe</Name>
<Age>28</Age>
<City>Los Angeles</City>
</Person>
</People>
Yukarıdaki XML dosyasını parse eden SQL Server fonksiyonu aşağıdadır. Bu fonksiyonu kendinize göre revize edebilirsiniz. Benim yazmış olduğum basit bir XML dosyası.
Fonksiyon, XML verisini parametre olarak alır ve XML verisindeki her bir “Person” öğesini bir tablo satırı olarak döndürür. Her satırda, “Name”, “Age” ve “City” adlı öğelerin değerleri alınır.
CREATE FUNCTION dbo.ReadXML (@xmlData XML)
RETURNS TABLE
AS
RETURN
(
SELECT
x.n.value('Name[1]', 'VARCHAR(50)') AS Name
,x.n.value('Age[1]', 'INT') AS Age
,x.n.value('City[1]', 'VARCHAR(50)') AS City
FROM @xmlData.nodes('/People/Person') x (n)
)
Bu fonksiyonu kullanarak tabloya veri eklemek için aşağıdaki gibi kodlar yazmalısınız.
CREATE TABLE People (
ID INT IDENTITY (1, 1) PRIMARY KEY
,Name VARCHAR(50)
,Age INT
,City VARCHAR(50)
)
INSERT INTO People (Name, Age, City)
SELECT
Name
,Age
,City
FROM dbo.ReadXML('<People>
<Person>
<Name>John Smith</Name>
<Age>35</Age>
<City>New York</City>
</Person>
<Person>
<Name>Jane Doe</Name>
<Age>28</Age>
<City>Los Angeles</City>
</Person>
</People>')
Yukarıdaki fonksiyonu ve tabloyu oluşturup Insert kodlarını çalıştırınca aşağıdakine benzer bir sonuç göreceksiniz.
Görüldüğü üzere XML oluşturan fonksiyon yazıp ve bu fonksiyonu kullanarak tabloya veri eklemiş olduk.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.