SQL 服务器将属性插入 xml 的顶级节点

SQL Server insert Attribute to top node of xml

我想向 XML 数据类型的根节点插入一个属性。如果我知道根节点的名称是 Quote,那么我可以这样插入:

    DECLARE @myDoc xml;     
DECLARE @id int;
SET @id = 12345; 

SET @myDoc = '<Quote>       
    <Close>
        123
    </Close>    
</Quote>'  ;  
SET @myDoc.modify('           
insert attribute ID {sql:variable("@id") }           
into   (/Quote)[1] ');  

SELECT @myDoc; 

如果我不知道根节点名称怎么办?无论根名称如何,我都想向根节点插入一个属性。我正在使用 SQL Server 2008r2。谢谢

使用(/*)[1]定位根节点:

SET @myDoc = '<Quote>       
    <Close>
        123
    </Close>    
</Quote>'  ;  
SET @myDoc.modify('           
insert attribute ID {sql:variable("@id") }           
into (/*)[1] ');  

SQL Fiddle Demo here