首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有内部查询的XML显式Sql Server

带有内部查询的XML显式Sql Server
EN

Stack Overflow用户
提问于 2014-07-21 07:36:20
回答 1查看 1.5K关注 0票数 0

我有以下查询,它生成XML输出:

代码语言:javascript
复制
select Top 10 1 as tag,
    null as parent, 
    property_name as [Property!1!PropertyName!cdata], 
        (select 2 as tag, 
                1 as parent, 
                 null as [Subdivision!2!SubdivisionName!cdata] 
            from subdivision s 
           where s.subdivision_id=p.fk_subdivision_id
        FOR XML EXPLICIT) 
from property p
FOR XML EXPLICIT,root('Properties')

我预期的结果是:

代码语言:javascript
复制
<Properties>
   <Property>
       <PropertyName><![CDATA[Test Property]]></PropertyName>
       <Subdivision>
          <SubdivisionName><![CDATA[Test Subdivision]]</SubdivisionName>
       </Subdivision>
   </Property>     
</Properties>

我需要将数据封装在cdata标签中。所以我用了FOR XML EXPLICIT

当我运行查询时,它会出现以下错误:

对于XML,显式查询包含无效的列名“”。使用TAGNAME!TAGID!ATTRIBUTENAME!格式,其中TAGID是正整数。

我经历过很多论坛,但他们没有帮助我。请任何人帮助我在框架查询或提供任何链接,将有助于我。

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-22 03:30:40

要使用XML显式,需要指定具有UNIONed查询的节点层次结构,而不是嵌套查询。所有联合的结果是一个表,表示XML的树结构,从无父根开始。参考资料:http://msdn.microsoft.com/en-us/library/ms189068%28v=sql.100%29.aspx

代码语言:javascript
复制
SELECT
    1 AS Tag,
    NULL AS Parent, 
    p.property_name AS [Property!1!PropertyName!cdata],
    NULL AS [Subdivision!2!SubdivisionName!cdata]
FROM
    property p
UNION ALL
SELECT
    2 AS Tag,
    1 AS Parent,
    NULL AS [Property!1!PropertyName!cdata],
    s.subdivision_name AS [Subdivision!2!SubdivisionName!cdata]
FROM
    property p
INNER JOIN
    subdivision s
ON
    s.subdivision_id = p.fk_subdivision_id
FOR XML EXPLICIT, ROOT('Properties')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24859823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档