如果向一个xml 变量中插入一个 xml 变量,比如:
有@xml1 变量
'
<data>
<row id='1' name='111'>
</data>
'
有@xml2 变量
'
<row id='2' name='222'>
'
如何将@xml2插入到@xml最后一个节点后。
------解决思路----------------------
猜到会这样,考虑动态执行了
DECLARE @xml1 XML
SET @xml1=
'<data>
<row id=''1'' name=''111''/>
</data>'
DECLARE @xml2 XML
SET @xml2=
'<row id=''2'' name=''222''/>'
DECLARE @STR NVARCHAR(4000)
SET @STR='insert <row id=''2'' name=''222''/> into (/data)[1]'
SET @STR='SET @xml1.modify('''+REPLACE(@STR,'''','''''')+''')'
EXEC SYS.SP_EXECUTESQL @STR,N'@xml1 XML OUT,@xml2 XML',@xml1 OUT,@xml2
SELECT @xml1
------解决思路----------------------
这样效果?
USE tempdb
GO
DECLARE @xml1 XML,@xml2 XML
select @xml1='<data>
<row id="1" name="111"/>
</data>
',@xml2='<row id="2" name="222"/>'
SET @xml1.modify('insert sql:variable("@xml2")
as last
into (/data)[1]')
SELECT @xml1
/*
<data>
<row id="1" name="111" />
<row id="2" name="222" />
</data>
*/
------解决思路----------------------
create proc [dbo].[p1_XdCom_insertNode]
@xd_xml xml output,
@xs_son nvarchar(max),
@xpath_pnode nvarchar(1000)
as
declare @sql nvarchar(max);
set @sql='set @xd_xml1.modify('+char(39)+'insert '
+@xs_son+' into ('+@xpath_pnode+')[1]'+CHAR(39)+');';
exec sp_executesql @sql,N'@xd_xml1 xml output',@xd_xml1=@xd_xml output;