UpdateXML()

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • UpdateXML()

    Sers Leute,

    Ich schreibe gerade an meiner Diplomarbeit, welche eigentlich am besten "gestern" schon fertig sein sollte :-), aber ich habe noch ein paar kleine

    Probleme bei einem könnt ihr mir vielleicht helfen.

    Ich habe einen XML basierenden Eintag in meiner Oracle - DB und will diesen updaten.

    mein Statment sieht wie folgt aus.

    SQL-Abfrage

    1. UPDATE tabstl
    2. SET XMLDOC = updateXML(XMLDOC,'/STL/Position/@PositionID', '-30683')
    3. WHERE existsNode(XMLDOC, '//Position[@PositionID =615062]') = 1


    also bei diesem Statment werden aber alle in der STL vorkommenden PositionsID's mit -30683 ersetz.

    Ich möchte aber nur die ID ersetzen welche die PositionsID '615062' hat.


    der knoten in der DB sie wie folgt aus:

    Quellcode

    1. ...
    2. <Position PositionID="312618" >
    3. <originalSTL><originalSTLID>15714</originalSTLID>
    4. <originalSTLVersion>0</originalSTLVersion>
    5. <originalSTLNumber>EP00017050000</originalSTLNumber>
    6. </originalSTL>
    7. <Positionsnummer>0001</Positionsnummer>
    8. <Menge>1</Menge>
    9. <Einheit>ST</Einheit>
    10. <Materialnummer>1.4305 40x75</Materialnummer>
    11. <Benennung Language="DE" ></Benennung>
    12. <Benennung Language="EN" ></Benennung>
    13. <Bemerkung Language="DE" ></Bemerkung>
    14. <Bemerkung Language="EN" ></Bemerkung>
    15. </Position>
    16. ...
    Alles anzeigen


    ... also es können weitere Positionen davor oder dannach hängen, aber ich will nur diesen eine, hier ROT makierte, ID ändern, ....

    Wäre super wenn ihr mir helfen könnt, ...
    MFG Andy
    Wer aufgehört hat besser zu werden, hat aufgehört gut zu sein!!!
  • Hi,

    Ich nehme an es werden alle XML-Attribute in dem Tabelleneintrag ersetzt, das u.a. eine PositionID 615062 hat. Und ich vermute in einem Tabelleneintrag tabstl ist ein XML Dokument mit mehreren Position Nodes.

    Quellcode

    1. SELECT * FROM tabstl
    2. WHERE existsNode(XMLDOC, '//Position[@PositionID =615062]') = 1;


    Sollte dir alle Einträge liefern, bei denen mindestens einmal die PositionID 615062 vorkommt.

    Betrachte updateXML alleine - denn das hat keinen Zusammenhang mit der WHERE.

    Quellcode

    1. updateXML(XMLDOC,'/STL/Position/@PositionID', '-30683')

    da hier keine Beschränkung existiert werden alle Einträge ersetzt.

    Die Bedingung sollte also in den XPATH Ausdruck

    Quellcode

    1. updateXML(object_value, '//Position[@PositionID=615062]', '-30683');