Sélectionner des nœuds XML dans SQL Server

Salut j'ai besoin de remplir la table en sélectionnant la valeur du noeud enfant

XML ressemble à ceci

<Transmitters> <Id>1</Id><CoverageLevel>2</CoverageLevel> <Id>2</Id><CoverageLevel>4</CoverageLevel> <Id>3</Id><CoverageLevel>6</CoverageLevel> </Transmitters> 

et la table a deux champs

 Transmitter(Id, CoverageLevel) INSERT INTO Transmitter([idTransmitter], [coverageLevel]) SELECT ParamValues.T.value('Id[1]', 'nvarchar(50)'), ParamValues.T.value('CoverageLevel[1]', 'nvarchar(50)') FROM @otherTransmitter.nodes('//Transmitters') AS ParamValues(T) 

mais ça ne marche pas?

Votre XML n'est pas très bien formaté pour ce type de tâche – vous n'avez aucun nœud enfant utilisable dans <Transmitters> lequel vous pouvez countr.

Si votre XML ressemblait à ceci:

 <Transmitters> <Transmitter> <Id>1</Id><CoverageLevel>2</CoverageLevel> </Transmitter> <Transmitter> <Id>2</Id><CoverageLevel>4</CoverageLevel> </Transmitter> <Transmitter> <Id>3</Id><CoverageLevel>6</CoverageLevel> </Transmitter> </Transmitters> 

alors vous pouvez utiliser l'expression XPath

 @otherTransmitter.nodes('/Transmitters/Transmitter') AS ParamValues(T) 

pour prendre possession de vos valeurs.

Vous n'avez pas cela – vous n'avez que des <Id> et des <CoverageLevel> individuels dans votre <Transmitters> – il n'y a pas de balise XML "container" qui contient les éléments qui sont set.

Il n'y a vraiment pas de XPath qui vous permettra d'énumérer correctement ces nœuds …