2016-11-18 41 views
0

我有XPath來從XML在VARCHAR(MAX)可變刪除,但XML.modify('delete '[email protected])給出一個錯誤,的Xquery使用XPath從SQL刪除:可變

XML數據類型方法的參數1「修改「必須是字符串 。

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

有什麼辦法去除使用XPath在@MyXpath變量提供這些組件?

- 編輯示例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

*有什麼辦法*簡短的回答:是的,*動態創建的SQL *和'EXEC'。如果你需要幫助,你必須提供更多細節。你想要達到什麼目的? – Shnugo

+0

@Shnugo如果我創建SQL和EXEC,那麼它不能與本地變量交互,即「@ myXML」。我不想在數據庫端做任何更改,只是爲了更新本地的@ XML變量 –

+0

您如何期待我的幫助?我不知道你的變量,我也不知道你想要引入的'XPath'。一般來說:你嘗試的東西不行!請提供一個工作示例:(簡化)XML和工作語句,並使用字面書寫的.modify()。然後解釋你想動態改變哪部分,並希望有人能提出解決方案。 – Shnugo

回答