2013-02-13 57 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