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 …