2013-02-13 60 views
0

此查詢工作正常爲FOR XML EXPLICIT UNION結果分配給一個變量

SELECT 1 AS TAG, NULL AS parent, 1 [dog!1] 
UNION (SELECT 1,NULL, 3) 
FOR XML EXPLICIT, ROOT('dogs') 

我想將它分配給一個變量。這不工會工作正常:

DECLARE @x xml 
SET @x = ((
    (SELECT 1 AS TAG, NULL AS parent, 1 [dog!1] 
    FOR XML EXPLICIT, ROOT('dogs')) 
)) 

只要我介紹了工會這是行不通的:

DECLARE @x xml 
SET @x = ((
    (SELECT 1 AS TAG, NULL AS parent, 1 [dog!1] 
    UNION (SELECT 1,NULL, 3) 
    FOR XML EXPLICIT, ROOT('dogs')) 
    )) 

嘗試過各種各樣的事情。我缺少

+0

你歌廳什麼錯誤? – 2013-02-13 17:05:12

回答

3

你只需要添加更多的子查詢級是這樣的:

DECLARE @X XML = 
(
    SELECT * FROM 
    (
    SELECT 1 AS TAG, NULL AS parent, 1 [dog!1] 
    UNION 
    SELECT 1,NULL, 3 
)X 
    FOR XML EXPLICIT, ROOT('dogs') 
); 

SELECT @X; 
+0

不錯的一個謝謝 – 2013-02-13 17:11:33

+0

只是想編鐘,因爲這不適用於我的情況。我正在使用CDATA('[dog!1!ColumnAlias!cdata]'),但CDATA未包含在XML輸出中。運行外部括號的內容確實包括CDATA標籤;我需要將確切的輸出結果輸入到一個XML變量中。 – 2014-11-17 22:13:23