我将多个不同的数据项发送到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中提取单个字段时,我在SELECT FROM xml.Nodes()方面运气不错,如
SELECT T.item.value('Voltage[1]', 'float') as Voltage
FROM @xml.nodes('//Root/Gizmo1') T(item)
现在我遇到的问题是我想在另一个xml变量中提取整个Gizmo元素。 values()函数不接受数据类型'xml',我不知道该选择什么。
有人有解决方案吗?