3

我需要返回 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

4

1 回答 1

3

使用FOR XML PATHSQL Server 2005 和更新版本中可用的语法 - 尝试如下操作:

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 元素中

于 2012-03-24T14:10:08.967 回答