Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从OpenXMLSQL存储过程中选择相同的子节点_Sql_Sql Server_Stored Procedures_Openxml - Fatal编程技术网

从OpenXMLSQL存储过程中选择相同的子节点

从OpenXMLSQL存储过程中选择相同的子节点,sql,sql-server,stored-procedures,openxml,Sql,Sql Server,Stored Procedures,Openxml,我有一个XML字符串,如下所示: <XML> <ProductDetail> <Barcode>170604658</Barcode> <PropertyDetail> <PropertyKey>Size</PropertyKey> <PropertyValue>XXL</PropertyValue>

我有一个XML字符串,如下所示:

<XML>
   <ProductDetail>
        <Barcode>170604658</Barcode>
       <PropertyDetail>
             <PropertyKey>Size</PropertyKey>
             <PropertyValue>XXL</PropertyValue>
             <PropertyKey>ProdTaxType</PropertyKey>
             <PropertyValue>5%</PropertyValue>
       </PropertyDetail>
   </ProductDetail>
</XML>
PropertyKey PropertyValue
    Size    XXL
但是,对于上述内容,我得到的一行数据如下:

<XML>
   <ProductDetail>
        <Barcode>170604658</Barcode>
       <PropertyDetail>
             <PropertyKey>Size</PropertyKey>
             <PropertyValue>XXL</PropertyValue>
             <PropertyKey>ProdTaxType</PropertyKey>
             <PropertyValue>5%</PropertyValue>
       </PropertyDetail>
   </ProductDetail>
</XML>
PropertyKey PropertyValue
    Size    XXL
但是,根据定义的XML,我希望获得如下所示的数据:

PropertyKey     PropertyValue
 Size              XXL
 ProdTaxType       5%

对于同一个节点名,我从xml字符串中只得到一条记录。因此,请在上面的sp中提出建议。

因为您的XML格式不好,应该是这样的:

DECLARE @hdoc varchar(max) = '<XML>
      <ProductDetail>
        <Barcode>150604658</Barcode>
       <PropertyDetail>
                     <PropertyKey>Size</PropertyKey>
                     <PropertyValue>XXL</PropertyValue>
       </PropertyDetail>
       <PropertyDetail>
                    <PropertyKey>ProdTaxType</PropertyKey>
                    <PropertyValue>5%</PropertyValue>
       </PropertyDetail>
   </ProductDetail>
</XML>'
DECLARE @hdoc varchar(max) = '<XML>
      <ProductDetail Barcode="150604658">
       <PropertyDetail PropertyKey="Size" PropertyValue="XXL" />
       <PropertyDetail PropertyKey="ProdTaxType" PropertyValue="5%" />
     </ProductDetail>
</XML>'
现在你不会想到写:

<PropertyDetail PropertyKey="Size" PropertyValue="XXL" 
                PropertyKey="ProdTaxType" PropertyValue="5%" />


但其含义与您拥有的XML相同-

标记您正在使用的dbms。(大多数产品都有自己的存储过程版本。)MS SQL SERVER…您是否缺少调用
EXEC sp_xml_preparedocument@idoc OUTPUT,@doc在您的示例中`