2010-08-17 55 views
3

下面這條語句:SELECT FOR XML,如何使用?

SELECT 
    .... 
FROM 
    .... 
WHERE 
    .... 
FOR XML PATH('Booking'), ROOT('doc') 

這個方法返回一個XML字符串的所有記錄。我希望每條記錄都有自己的XML字符串。這有意義嗎?可能嗎。這樣做有意義嗎?

我使用Microsoft SQL Server 2008

回答

1

如果我理解正確的話,你要每一行產生單獨的XML文檔(有作爲「XML字符串」沒有這樣的事)。您需要通過FOR XML運行每個行。例如,從表中取出每行並使用CROSS APPLY運算符來投影單個行FOR XML TYPE。使用連接的行表值構造函數。例如。使用master..spt_values:

select t.* 
from master..spt_values s 
cross apply (
select s.* 
from (values (1)) as t(c) 
for xml path('Boookin'), root('Doc'), type) as t(x) 

將每行返回一個XML文檔,具有如下的結構:

<Doc> 
    <Boookin> 
    <name>rpc</name> 
    <number>1</number> 
    <type>A </type> 
    <status>0</status> 
    </Boookin> 
</Doc> 

與您所選擇的表替代master..spt_values。