2012-11-22 35 views
0

獲得XML記錄到臨時表中,我有以下XML無法通過OPENXML

<NewDataSet> 
<data name="AC_Capacity_Creation_Notification.Text"> 
    <value>Activation successfull and sent for approval.</value> 
    <comments>AC Capacity</comments> 
</data> 
<data name="AC_Capacity_Modification_Daily_Notification.Text"> 
    <value>Approved successfully..</value> 
    <comments>AC Capacity</comments> 
</data> 
<data name="AC_Capacity_Modification_Schedule_Notification.Text"> 
    <value>Are you sure you want to close this form?</value> 
    <comments>AC Capacity</comments> 
    </data> 
</NewDataSet> 

我想從那裏我可以進一步查詢它從該XML數據放入臨時表中,但我不能這樣做所以

我曾嘗試做這種方式:

EXEC sp_xml_PrepareDocument @intHandle OUTPUT, @XML  

    SELECT * into #tmp FROM OPENXML(@intHandle, '/NewDataset/data',2) 

    EXEC sp_xml_removedocument @intHandle 

    drop table #tmp 

,但我得到空行

回答

0

這是我如何做它

SELECT T.N.value('@name', 'varchar(100)')name, 
    T.N.value('value[1]', 'varchar(100)')value 
FROM @XML.nodes('/NewDataSet/data') AS T(N) 

它的工作原理..thanks所有烏拉圭回合的答案。

1

只需使用本地XQuery - 非常容易!

DECLARE @Input XML = '<NewDataSet> 
<data name="AC_Capacity_Creation_Notification.Text"> 
    <value>Activation successfull and sent for approval.</value> 
    <comments>AC Capacity</comments> 
</data> 
<data name="AC_Capacity_Modification_Daily_Notification.Text"> 
    <value>Approved successfully..</value> 
    <comments>AC Capacity</comments> 
</data> 
<data name="AC_Capacity_Modification_Schedule_Notification.Text"> 
    <value>Are you sure you want to close this form?</value> 
    <comments>AC Capacity</comments> 
    </data> 
</NewDataSet>' 

SELECT 
    VALUE = NDSData.value('(value)[1]', 'varchar(200)'), 
    Comments = NDSData.value('(comments)[1]', 'varchar(200)') 
INTO 
    #temp 
FROM 
    @Input.nodes('/NewDataSet/data') AS Tbl(NDSData) 

給我的輸出:

enter image description here

+0

它的工作原理,但我也想要名字的價值...雖然我已經發布了自己的答案...謝謝你的努力... – daljeet