2012-03-24 35 views
3

我有一個要求返回XML作爲跟隨對於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

回答

3

使用可用的FOR XML PATH語法在SQL 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元素。通過在元素之間添加「空行」,可以防止將輸出合併/連接成單個 XML元素

+0

謝謝Marc。保存我的日子 – Deb 2012-03-24 14:30:45

+0

+1比tsql XML voodoo簡單得多,因爲在這裏:http://stackoverflow.com/questions/24944539/using-attribute-more-than-once-in-for-xml-path-t-sql-查詢與 - 相同的元素 - 南 – Mzn 2015-09-13 07:20:50

相關問題