2015-05-08 33 views
1

我尝试在MS SQL SERVER中使用OLE自动化对象撰写XML文档。在Transact-SQL中使用OLE自动化对象撰写XML

DECLARE @xml_out INT 
DECLARE @xml_string VARCHAR(8000) 
DECLARE @root_elem INT 
DECLARE @parent_child_node  INT 
DECLARE @child_elem INT 
DECLARE @append_child INT 

EXECUTE sp_OACreate 'MSXML2.DOMDocument.6.0',@xml_out OUTPUT 

EXECUTE sp_OAMethod @xml_out,'createElement',@root_elem OUTPUT,'root' 
EXECUTE sp_OAMethod @xml_out,'documentElement.appendChild',@parent_child_node OUTPUT,@root_elem 

EXEC sp_OAGetErrorInfo @parent_child_node 

EXECUTE sp_OAMethod @xml_out,'createElement',@child_elem OUTPUT,'child' 
EXECUTE sp_OAMethod @root_elem,'appendChild',@append_child OUTPUT,@child_elem 

set @xml_string = '' 
EXECUTE sp_OAGetProperty @xml_out,'xml',@xml_string OUTPUT 
print 'result XML:' 
print @xml_string 
EXECUTE sp_OADestroy @xml_out 

但是,当我尝试添加的孩子我的文档,我得到了一个错误:

error:

所以我的文件不会被组成。 预期结果是:

<root> 
    <child/> 
</root> 

有人可以说我有什么问题吗?

+0

的SQL Server版本您使用的?最新版本对XML有真正的支持。 –

+0

SQL Server 2014.但我需要为此使用OLE对象必然 –

+0

为什么您需要使用OLE对象? –

回答

1

可以调用的XML文档appendChild()方法直接而无需先访问documentElement属性:

EXECUTE sp_OAMethod @xml_out,'appendChild',@parent_child_node OUTPUT,@root_elem 
+1

非常感谢。它现在有效! –