2016-11-18 2 views
0

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

* 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

+0

@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. –

+0

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

Antwort