Я столкнулся с проблемой при попытке проанализировать xml, который хранится в записях таблицы. Структура xml выглядит следующим образом:
<?xml version="1.0" encoding="utf-16"?>
<WidgetsLayout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<WidgetsList>
<WidgetConfiguration>
<WidgetId>4</WidgetId>
<DockOrder>0</DockOrder>
<DockZoneId>0</DockZoneId>
<Width />
<Height />
<IsRemovable>true</IsRemovable>
</WidgetConfiguration>
<WidgetConfiguration>
<WidgetId>3</WidgetId>
<DockOrder>0</DockOrder>
<DockZoneId>1</DockZoneId>
<Width />
<Height />
<IsRemovable>true</IsRemovable>
</WidgetConfiguration>
</WidgetsList>
</WidgetsLayout>
И xml хранится в записях таблицы как varchar.
Мне нужно получить временную таблицу, которая будет содержать отдельный набор WidgetId из структуры xml.
ОБНОВЛЕНО:
Я написал следующеепакетный оператор для извлечения набора из строк XML WidgetConfiguration, поэтому я смог бы получить набор WidgetId, но я столкнулся с проблемой с оператором вставки:
GO
declare @dashboard_layout table (
id int,
config_xml xml
)
INSERT INTO @dashboard_layout(id)
SELECT
widget_config.value('(WidgetId)[1]', 'int')
FROM
dbo.dashboard_configuration c
CROSS APPLY
CAST(RIGHT(c.configuration_xml_string, LEN(c.configuration_xml_string) - 41), XML).nodes('/WidgetsLayout/WidgetsList/WidgetConfiguration') AS list(widget_config)
select * from @dashboard_layout
У меня синтаксическая ошибкав последней строке оператора вставки при вызове «узлов» в результате «приведения»
Заранее спасибо.