Potrzebuję SQL skrypt, który pobierze XML-wiersz z bazy danych [varchar(max)], sprawdzać i aktualizować, jeśli ona odpowiada konkretnej sytuacji.
Wyobraź sobie, że mój plik xml ma następujący format:
<root>
<level1>
<level2>
<level3 />
<level3 />
</level2>
</level1>
<level1>
<level2>
<level3>
<level4>
<level5>
<level6 here="now is the time for XYZ">
<options>
<option this="that" />
<option me="you" />
</options>
</level6>
</level5>
</level4>
</level3>
</level2>
</level1>
<level1>
<level2>
<level3>
<level4>
<level5>
<level6 here="this one is not of interest">
<options>
<option this="that" />
<option me="you" />
</options>
</level6>
</level5>
</level4>
</level3>
</level2>
</level1>
<level1>
<level2>
<level3>
<level4>
<level5>
<level6 here="now is the time for ABC">
<options>
<option this="that" />
<option me="you" />
<option here="now" />
</options>
</level6>
</level5>
</level4>
</level3>
</level2>
</level1>
</root>
Tak więc, chcę zaktualizować wszystkie elementy o nazwie "level6" i atrybutem "tu", którego wartość zaczyna się od "teraz jest czas". W ten sposób, to musi spełniać tylko dwóch elementów powyżej.
Ale to nie jedyne kryterium wyboru. Lista opcji nie musi zawierać <option here="now" />
. W ten sposób, u nas musi być tylko jeden element do aktualizacji.
<level6 here="now is the time for XYZ">
<options>
<option this="that" />
<option me="you" />
</options>
</level6>
Do tego elementu, następnie chcę dodać brakujące <option here="now" />
tak , że to staje się:
<level6 here="now is the time for XYZ">
<options>
<option this="that" />
<option me="you" />
<option here="now" />
</options>
</level6>
Tak więc końcowy wynik musi być:
<root>
<level1>
<level2>
<level3 />
<level3 />
</level2>
</level1>
<level1>
<level2>
<level3>
<level4>
<level5>
<level6 here="now is the time for XYZ">
<options>
<option this="that" />
<option me="you" />
<option here="now" /> // <- this one new
</options>
</level6>
</level5>
</level4>
</level3>
</level2>
</level1>
<level1>
<level2>
<level3>
<level4>
<level5>
<level6 here="this one is not of interest">
<options>
<option this="that" />
<option me="you" />
</options>
</level6>
</level5>
</level4>
</level3>
</level2>
</level1>
<level1>
<level2>
<level3>
<level4>
<level5>
<level6 here="now is the time for ABC">
<options>
<option this="that" />
<option me="you" />
<option here="now" />
</options>
</level6>
</level5>
</level4>
</level3>
</level2>
</level1>
</root>
Załóżmy, że mogę odczytywać dane z BAZY danych w wierszu i że wiem, jak zaktualizować BAZY danych, tak, że faktycznie to jest to, jak manipulować ciągiem xml w SQL (SQL Server).