2015-05-08 34 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

非常感謝。它現在有效! –