SQL Server 2000 sp_xml_preparedocument - Pour obtenir InnerXml / InnerText d'un noeud
-
20-09-2019 - |
Question
J'ai quelques données comme au fond. J'utilise SQL Server 2000 stockées proc pour traiter ces données en utilisant sp_xml_preparedocument.
Je voudrais obtenir les données dans le nœud PartAuxiliaryID comme il est ci-dessous (le xml exact tel qu'il est, et non pas les valeurs ou attribut) à une variable. Quelle sera la meilleure façon de le faire dans proc stockée à l'aide sp_xml_preparedocument
<Info name="quoteNumber">962445</Info>
<Info name="shipSourceType">INTERNAL</Info>
<Data>
<Item>
<ItemID>
<PartID>1234</PartID>
<PartAuxiliaryID>
<Info name="quoteNumber">962445</Info>
<Info name="shipSourceType">INTERNAL</Info>
</PartAuxiliaryID>
</ItemID>
</Item></Data>
Pas de solution correcte
Autres conseils
J'ai trouvé la réponse
Option 1
DECLARE @xmlData varchar(3000)
SET @xmlData = '<Data>
<Item>
<ItemID>
<PartID>1234</PartID>
<PartAuxiliaryID>
<Info name="quoteNumber">962445</Info>
<Info name="shipSourceType">INTERNAL</Info>
</PartAuxiliaryID>
</ItemID>
</Item></Data>'
DECLARE @idoc int, @intRet int
DECLARE @URL VARCHAR(1000)
EXEC @intRet= sp_xml_preparedocument @idoc OUTPUT, @xmlData
SELECT *
FROM OPENXML (@idoc, '/Data/Item/ItemID/PartAuxiliaryID')
WITH (PartAuxiliaryID varchar(2000) '@mp:xmltext')
EXEC sp_xml_removedocument @idoc
-------------------------------------------------------------------------------
--will get the following
<PartAuxiliaryID><Info name="quoteNumber">962445</Info><Info name="shipSourceType">INTERNAL</Info></PartAuxiliaryID>
Option 2
DECLARE @xmlData varchar(3000)
SET @xmlData = '<Data>
<Item>
<ItemID>
<PartID>1234</PartID>
<PartAuxiliaryID>
<Info name="quoteNumber">962445</Info>
<Info name="shipSourceType">INTERNAL</Info>
</PartAuxiliaryID>
</ItemID>
</Item></Data>'
DECLARE @idoc int, @intRet int
DECLARE @URL VARCHAR(1000)
EXEC @intRet= sp_xml_preparedocument @idoc OUTPUT, @xmlData
SELECT *
FROM OPENXML (@idoc, '/Data/Item/ItemID/PartAuxiliaryID/Info')
WITH (PartAuxiliaryID varchar(2000) '@mp:xmltext')
EXEC sp_xml_removedocument @idoc
obtiendra les éléments suivants en deux lignes
<Info name="quoteNumber">962445</Info>
<Info name="shipSourceType">INTERNAL</Info>\
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow