2012-10-08 78 views
0

我有一個存儲過程中檢索XML格式的一些數據的查詢,在變量@xml_data返回,就像這樣:在SQL Server中合併XML變量

SELECT @xml_data = (
    SELECT * FROM (
     SELECT 1 AS Tag 
       ,0 AS Parent 
       ..... 
     FROM MyTable 
     WHERE id = @id 

     UNION ALL 

     SELECT 2 AS Tag 
       ,1 AS Parent 
       .... 
     FROM MyTable2 
     WHERE id = @id 

     UNION ALL 

     SELECT 3 AS Tag 
       ,2 AS Parent 
       .... 
     FROM MyTable3 
     WHERE id = @id 
    ) results 
FOR XML EXPLICIT, TYPE) 

這是工作像諺語夢想:)

但是,我想連接一個頭到這個XML(例如<xml version="1.0" encoding="ISO-8859-1"/>),並不知道如何去做。我試過轉換爲NVARCHAR,在一個語句中選擇了兩個變量,但看起來似乎沒有正確。

任何人都可以幫忙嗎?

謝謝:)

回答

1

嘗試做這樣的:

DECLARE @x xml 
DECLARE @strXML varchar(MAX) 
SET @x=N'<Employee><Name>Luftwaffe</Name></Employee>' 
set @strXML = '<xml version="1.0" encoding="ISO-8859-1"/>' + CONVERT(varchar(MAX),@x) 
SELECT @strXML 

希望它能幫助!

+0

謝謝,完美的作品 – RichardB

1

您可以只聲明開頭的字符串,並一起將它們連接起來:

declare @xml_data nvarchar(MAX) 

set @xml_data = '<xml version="1.0" encoding="ISO-8859-1"/>' 

SELECT @xml_data = @xml_data + (
    SELECT * FROM (
     SELECT 1 AS Tag 
       ,0 AS Parent 
       ..... 
     FROM MyTable 
     WHERE id = @id 

     UNION ALL 

     SELECT 2 AS Tag 
       ,1 AS Parent 
       .... 
     FROM MyTable2 
     WHERE id = @id 

     UNION ALL 

     SELECT 3 AS Tag 
       ,2 AS Parent 
       .... 
     FROM MyTable3 
     WHERE id = @id 
    ) results 
FOR XML EXPLICIT, TYPE)