2 Stimmen

XML-Knoten in SQL Server auswählen

Hallo, ich brauche, um Tabelle durch die Auswahl von Wert aus untergeordneten Knoten aufzufüllen

XML sieht folgendermaßen aus

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

und die Tabelle hat zwei Felder

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) 

aber es funktioniert nicht?

3voto

marc_s Punkte 701497

Ihr XML ist für diese Art von Aufgabe nicht sehr gut formatiert - Sie haben keine brauchbaren Kindknoten in <Transmitters> auf die Sie sich verlassen können.

Wenn Ihr XML so aussehen würde:

<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>

dann können Sie den XPath-Ausdruck verwenden

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

um Ihre Werte in den Griff zu bekommen.

Das haben Sie nicht - Sie haben nur einzelne <Id> y <CoverageLevel> in Ihrem <Transmitters> - es gibt keinen "Container"-XML-Tag, der die zusammengehörenden Elemente zusammenhält.

Es gibt wirklich keinen XPath, der es Ihnen ermöglicht, diese Knotenpunkte richtig aufzuzählen.....

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X