2013-08-26 13 views
8

Miałem problemy z tym prostym kawałkiem kodu bez rezultatu. Po prostu próbuję dodać nowy węzeł do zmiennej XML.Dodaj węzeł do XML za pomocą TRANSACT-SQL

DECLARE @XML XML; 
SET @XML = '<root> 
<policyData> 
    <txtComentario /> 
    <idRegProducto>76</idRegProducto> 
    <txtDuracion>24</txtDuracion> 
</policyData> 
</root>'; 
DECLARE @NODE XML; 
SET @NODE = '<newNode>10</newNode>'; 
SET @XML.modify 
('insert sql:variable("@NODE") as first 
into (/root/policyData)[0]') 
SELECT @XML; 

Nie ma błędów, ale nowy węzeł nie jest wyświetlany na wydruku. Czy jest coś, co muszę najpierw skonfigurować przed użyciem XML w SQL Server? Wszelkie sugestie, dlaczego to nie działa?

Z góry dziękuję!

+3

Spróbuj zmienić "[0]" na "[1]" –

Odpowiedz

7

Kiedy używasz [0], tak naprawdę mówisz [position()=0]. Pierwszy węzeł ma pozycję 1, więc powinieneś zmienić predykat na [1], jeśli chcesz wstawić nowy węzeł do pierwszego wystąpienia policyData.

+0

Wielkie dzięki. Zastanawiam się, dlaczego Microsoft nie zgłasza tutaj błędu, aby użytkownik wiedział, że składnia nie jest dobra. – Oscar