SQL 2012 &'u kullanarak, bu girdiyi almak için & girdisi olan her bir öğe için tabloya bir satır yazın. saklı yordama geçirilen bir XML bölümü.SQL 2012 - bir XML listesiyle yineleyin (WHILE döngüsüne daha iyi bir alternatif)
<MyXML>
<MyMsg>My Text Message</MyMsg>
<MsgTime>2013-09-25 10:52:37.098</MsgTime>
<SendToList>
<SendTo>John</SendTo>
<SendTo>James</SendTo>
<SendTo>Rob</SendTo>
<SendTo>Pete</SendTo>
<SendTo>Sam</SendTo>
</SendToList>
</MyXML>
saklı yordam çıktısı bir tablo (yukarıdaki her SendTo
için bir tane) yerleştirilen 5 satır olmalı ve her birinin tabloda MyMsg
ve MsgTime
alanlarda aynı değere sahiptir: gibi bir XML görünüyor.
SendTo
numarasının sayısını alabilir ve XML'yi SendToList
alabilir, ancak ekleme yapmak için bunu nasıl değiştireceğimi bilmiyorum.
XML'de neler olduğunu öğrenmek için aşağıdaki SQL'i kullanabilirim.
SELECT
x.value('(/MyXML/MyMsg)[1]', 'VARCHAR(1024)'),
x.value('(/MyXML/MsgTime)[1]', 'DATETIME'),
@max = x.query('<e> { count(/MyXML/SendToList/SendTo) } </e>').value('e[1]','int'),
@mlst = x.query('/MyXML/SendTo')
FROM @XML_In.nodes('//MyXML') i(x)
Şu anda, değişkenler ve SendToList öğeleri döngü için WHILE
kullanıyorum, ama daha iyi bir yolu olmalı biliyorum.
SELECT @msgTo= @XML_In.value('(/MyXML/SendToList/SendTo[position()=sql:variable("@cnt")])[1]','VARCHAR(100)')
Yukarıdakiler SendToList öğesindeki her öğenin değerini alır.
@mlst değişkenini seçersem, XML'in yapısını döngü yapmam gerektiğini görebilirim.
<SendToList>
<SendTo>John</SendTo>
<SendTo>James</SendTo>
<SendTo>Rob</SendTo>
<SendTo>Pete</SendTo>
<SendTo>Sam</SendTo>
</SendToList>
WHILE
çalışıyor olsa da, birbiri ardına bir ekleme yapılır. Mevcut metotların döngü yapmak yerine hepsini yapabilmesi gerektiğini düşünüyordum ama yapmam gerekeni yapmak için onları kullanmam konusunda yeterince bilgi sahibi değilim.
Herhangi bir yardım veya öneriniz için teşekkür ederiz.
Doğrudan bir masaya yerleştiriyordum - ikinci örneğiniz harika çalıştı. Teşekkür ederim! –
Verileri okumak ve ön uçta görüntülenecek bir değişkene kaydetmek istersem ne olur? http://stackoverflow.com/questions/26426412/how-to-ensure-the-sql-is-able-to-read-all-xml-tag-data – SearchForKnowledge
İlk seçenek SendTo, MyMsg, MsgTime bildirimde bulundu – user3885927