Xml verisi içerisine yeni node alanı eklemek için sql tarafında yapılacak güncelleme işlemi çalışmaları anlatılacaktır.
Tek bir xml içerisinde manuel ekleme işlemi sorun yaratmayacaktır ancak çoklu olarak veri tabanı üzerinden xml set lerinde güncelleme yapmak için bu sorguya ihtiyaç duyabilirsiniz.
| SistemData | Tipi |
|---|---|
| Id | tekil key |
| Data | Xml verisinin tutulduğu alan |
| WorkItems | Tipi |
|---|---|
| Id | tekil key |
| Data | SistemData.Id ile bağlandığı key |
| ProcessName | İlgili süreç ismi |
| State | Sürecin durumu(0:açık işler) |
Aşağıdaki güncelleme işleminde "<EgitimParaBirimi display="Türk Lirası">TRY</EgitimParaBirimi>" değerini "(/formData/EgitimTalep/EgitimParaBirimi)[1]" dizininin altına ekler.
SQL - Güncelleme İşlemi
UPDATE SistemData
SET Data.modify('insert <EgitimParaBirimi display="Türk
Lirası">TRY</EgitimParaBirimi> as first into
(/formData/EgitimTalep)[1]')
FROM SistemData f inner join
WorkItems wi on f.Id=wi.Data
where wi.ProcessName = 'Eğitim Talep' and wi.State=0
and f.Data.value('(/formData/EgitimTalep/EgitimParaBirimi)[1]','nvarchar(50)') is null
SQL de XML verisi güncelleme
SET Data.modify('delete (/formData/MasrafListesi/Data/Template/ProjeGiderYeri/text())')
Replace
SET Data.modify('replace value of (/formData/SAP/Masraf/BELDET/Data/Template/BELTP/text())[17] with ("DV")')
Ayrıca Bakınız
SQL Linked Servers nasıl kullanılır?