我需要按照以下方式返回xml
<row id="1">
<cell>1</cell>
<cell>setup/pagemst</cell>
<cell>Page Master</cell>
</row>
<row id="2">
<cell>2</cell>
<cell>setup/modules</cell>
<cell>Module Master</cell>
</row>
我使用了以下查询,但它不起作用
select
pageid id,pgurl cell,pgname cell
from m_pages
for xml raw
所有列的相同列名在oracle中工作正常但在SQL Server 2005中没有。任何想法?
提前致谢 DEB
答案 0 :(得分:3)
使用SQL Server 2005及更高版本中提供的FOR XML PATH
语法 - 尝试以下方法:
DECLARE @table TABLE (PageID INT, PageUrl VARCHAR(50), PageName VARCHAR(50))
INSERT INTO @table VALUES(1, 'setup/pagemst', 'Page Master'),(2, 'setup/modules', 'Module Master')
select
PageID AS '@id',
PageID AS 'cell',
'',
PageUrl AS 'cell',
'',
PageName AS 'cell'
from @table
FOR XML PATH('row')
最后给我输出结果:
<row id="1">
<cell>1</cell>
<cell>setup/pagemst</cell>
<cell>Page Master</cell>
</row>
<row id="2">
<cell>2</cell>
<cell>setup/modules</cell>
<cell>Module Master</cell>
</row>
FOR XML PATH
语法允许您定义要作为XML属性(... AS '@id'
)或XML元素返回的值。通过在元素之间添加“空”行,可以防止输出被合并/连接
到单个<cell>....</cell>
XML元素