I Xpath von XML in einer VARCHAR (MAX) Variable zu löschen habe, aber XML.modify('delete '[email protected])
einen Fehler geben,Xquery löscht mit Xpath aus SQL: variable
Das Argument 1 der XML-Datentyp-Methode „modify "muss eine Zeichenfolge Literal sein.
DECLARE @myXML XML,
@MyXpath VARCHAR(MAX)
-- Processing of Xpaths for components needed to remove
-- Adding those in @XpathsToRemove
SELECT TOP(1) @MyXpath = [XPATH]
FROM @XpathsToRemove
SET @myXML.modify('delete '[email protected])
Gibt es eine Möglichkeit, diese Komponenten mit Xpath in @MyXpath Variable zu entfernen?
- Bearbeiten Beispiel XML
DECLARE @myXML XML ='<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Dont forget me this weekend!</body>
</note>'
,@MyXpath VARCHAR(MAX) = '//note/from'
-- There are many Xpaths and dynamically generated with some processing so I don't want to hardcode Xpath there
SET @myXML.modify('delete '[email protected])
--This doesn't works too
-- SET @myXML.modify('delete "sql:variable("MyXPath")"')
SELECT @myXML
* Gibt es eine Möglichkeit * Kurze Antwort: Ja, * dynamisch erstellt SQL * und 'EXEC'. Wenn Sie Hilfe benötigen, müssen Sie weitere Details angeben. Was genau willst du erreichen? – Shnugo
@Shnugo Wenn ich SQL und EXEC erzeuge, kann es nicht mit lokalen Variablen interagieren, d. H. '@ MyXML'. Ich bin nicht daran interessiert, irgendwelche Änderungen auf der DB-Seite vorzunehmen, nur um diese lokale @ XML-Variable zu aktualisieren. –
Wie erwarten Sie, dass ich Ihnen behilflich bin? Ich kenne Ihre Variable nicht und kenne auch nicht den XPath, den Sie einführen möchten. Im Allgemeinen: Was du versuchst, wird nicht funktionieren! Bitte geben Sie ein funktionierendes Beispiel: (reduziert) XML und Arbeitsanweisung mit einem buchstäblich geschriebenen '.modify()'. Erklären Sie dann, welchen Teil Sie dynamisch ändern möchten und hoffen Sie, dass jemand eine Lösung vorschlagen kann. – Shnugo