2009-09-21 18 views
0

我將多個不同的數據項發送到XML變量中的存儲過程。該函數的簽名是這樣的:SQL:如何從XML類型的較大變量中選擇一個XML元素?

CREATE PROCEDURE MyProc 
    @id INT, 
    @xml xml 
AS 
BEGIN 
.... 
END 

和XML看起來有點像這樣:

<Root> 
    <SampleTime>2009-02-05 13:25:43</SampleTime> 
    <Gizmo1> 
    <Voltage>34.1</Voltage> 
    <Temperature>78.3</Temperature> 
    </Gizmo1> 
    <Gizmo2> 
     <Weight>235</Weight> 
     <Exposure>North</Exposure> 
    </Gizmo2> 
</Root> 

,其中不同GizmoX包含無關的信息。 當我想從XML中提取單場,我有不錯的運氣選擇xml.Nodes(),如

SELECT T.item.value('Voltage[1]', 'float') as Voltage 
FROM @xml.nodes('//Root/Gizmo1') T(item) 

現在我的問題是,我想提取整個Gizmo元素在另一個xml變量中。 values()函數不接受數據類型'xml',我不知道要選擇什麼。

有沒有人有解決方案?

回答

1

使用XQuery

select @xml.query('//Root/Gizmo1') 
+0

衛生署!謝謝! – 2009-09-22 00:36:16