我有以下查询,它生成XML输出:
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')我预期的结果是:
<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是正整数。
我经历过很多论坛,但他们没有帮助我。请任何人帮助我在框架查询或提供任何链接,将有助于我。
提前感谢
发布于 2014-07-22 03:30:40
要使用XML显式,需要指定具有UNIONed查询的节点层次结构,而不是嵌套查询。所有联合的结果是一个表,表示XML的树结构,从无父根开始。参考资料:http://msdn.microsoft.com/en-us/library/ms189068%28v=sql.100%29.aspx
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')https://stackoverflow.com/questions/24859823
复制相似问题