У меня есть следующая таблица
name | age | misc
------------------
david | 20 | foo
john | 30 | bar
И я хочу преобразовать ее в следующий XML:
<doc>
<field name="name" val="david" />
<field name="age" val="20" />
<field name="misc" val="foo" />
</doc>
<doc>
<field name="name" val="john" />
<field name="age" val="30" />
<field name="misc" val="bar" />
</doc>
У меня есть для этой работы ниже для одного столбца, однако еслиЯ пытаюсь добавить второй столбец для другого узла field
. Я получаю сообщение об ошибке:
Msg 9303, Level 16, State 1, Line 25
XQuery [query()]: Syntax error near 'name', expected '}'.
Это пример того, что я пытаюсь сделать, и готов к запуску в SQL Server Management Studio.Я не могу найти много документации по синтаксису и совершенно потерян для идей.
Любая помощь приветствуется!
declare @MyData table (name varchar(200), age varchar(200), misc varchar(200))
insert into @MyData values('david', '20', 'foo')
insert into @MyData values('john', '30', 'bar')
/*This one works fine*/
SELECT (select * from @MyData as MyData for xml auto, type).query
(
' for $d in /MyData
return
<doc>{
<field name="name" val="{data($d/@name)}" />
}</doc>'
)
/*This one is what I want*/
SELECT (select * from @MyData as MyData for xml auto, type).query
(
' for $d in /MyData
return
<doc>{
<field name="name" val="{data($d/@name)}" />
<field name="age" val="{data($d/@age)}" />
<field name="misc" val="{data($d/@misc)}" />
}</doc>'
)