2013-08-26 41 views
8

Tôi đã vật lộn với đoạn mã đơn giản này mà không có kết quả. Tôi chỉ đang cố thêm một nút mới vào một biến XML.Thêm nút vào XML bằng 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; 

Không có lỗi, nhưng nút mới không hiển thị ở đầu ra. Có cái gì mà tôi phải thiết lập đầu tiên trước khi sử dụng XML trong SQL Server? Bất kỳ đề xuất nào tại sao điều này không hoạt động?

Cảm ơn trước!

+3

Cố gắng thay đổi '[0]' thành '[1]' –

Trả lời

7

Khi bạn sử dụng [0], bạn thực sự đang nói [position()=0]. Nút đầu tiên có vị trí 1 vì vậy bạn nên thay đổi biến vị ngữ thành [1] nếu bạn muốn chèn nút mới vào lần xuất hiện đầu tiên là policyData.

+0

Cảm ơn rất nhiều. Tôi tự hỏi tại sao Microsoft không ném một lỗi ở đây để cho người dùng biết rằng cú pháp không ổn. – Oscar