SQL: Как выбрать элемент XML из большой переменной типа XML? - PullRequest
0 голосов
/ 22 сентября 2009

Я отправляю несколько разных элементов данных в хранимую процедуру в переменной 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», и я все равно не знаю, что выбрать.

У кого-нибудь есть решение для этого?

1 Ответ

1 голос
/ 22 сентября 2009

Использование XQuery :

select @xml.query('//Root/Gizmo1')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...