我在 SQL Server 2005 中遇到了 OPENXML 问题,如果 XML 没有每一层都可用,我将不会得到任何结果。一个例子可以解决我的问题:
所以我们有这样的 XML:
<Connection Name="DEFAULT" />'
<Branch Name="A_Branch">
<Leaf Name="A_Leaf.OP" >
<Property Name="A_Property" />
</Leaf>
</Branch>
</Connection>
并将 OPENXML 放入这样的表变量中
INSERT INTO @xmlDataTable
SELECT *
FROM OPENXML(@idoc, '/Connection/Branch/Leaf', 2)
WITH (
Connection varchar(100) '../../@Name'
, Branch varchar(100) '../@Name'
, Leaf varchar(100) '@Name'
)
这很好用!但是,如果您将此 XML 放入:
<Connection Name="DEFAULT">
</Connection>
然后 OPENXML 什么也不返回,一个空行集。
所以我真的不知道该怎么做才能解决这个问题。我需要考虑这两种情况,以及有分支但没有叶子的情况。有什么想法吗?