【问题标题】:Assigning results for a FOR XML EXPLICIT UNION to a variable将 FOR XML EXPLICIT UNION 的结果分配给变量
【发布时间】:2013-02-13 16:57:06
【问题描述】:

这个查询工作正常

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'))
   )) 

尝试了各种方法。我错过了什么

【问题讨论】:

  • 你遇到了什么错误?

标签: sql-server-2008 for-xml-explicit


【解决方案1】:

您只需要再添加一个子查询级别,如下所示:

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;

【讨论】:

  • 只是想插话,这在我的场景中不起作用。我正在使用 CDATA ([dog!1!ColumnAlias!cdata]),但 CDATA 未包含在 XML 输出中。运行外括号的内容确实包括 CDATA 标记;我需要将准确的输出放入 XML 变量中。
猜你喜欢
  • 2021-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-02
  • 2020-12-01
  • 2011-08-27
相关资源
最近更新 更多