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は何も返さず、空の行セットを返します。
だから私はそれを修正するために何をすべきか本当にわかりません。両方のシナリオと、ブランチはあるがリーフがないシナリオを説明する必要があります。何かご意見は?