Я отправляю несколько разных элементов данных в хранимую процедуру в переменной 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)
Теперь у меня проблема в том, что я хочу извлечь весь элемент Gizmo в другую переменную xml. Функция values () не принимает тип данных «xml», и я все равно не знаю, что выбрать.
У кого-нибудь есть решение для этого?