Я имею Xpath удалить из XML в переменной VARCHAR (MAX), но XML.modify('delete '[email protected])
выдаст ошибку,XQUERY удалить с Xpath из SQL: переменная
Аргумент 1 метода типа данных XML «изменить "должна быть строка буквальная.
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
* Есть ли способ * Короткий ответ: Да, * динамически созданный SQL * и 'EXEC'. Если вам нужна помощь, вы должны предоставить более подробную информацию. Чего именно вы хотите достичь? – Shnugo
@Shnugo Если я создаю SQL и EXEC, тогда он не может взаимодействовать с локальными переменными i.e '@ myXML'. Мне не интересно делать какие-либо изменения на стороне БД, просто чтобы обновить эту локальную переменную '@ XML' –
Как вы ожидаете от меня помощи? Я не знаю вашу переменную, и я не знаю «XPath», которую вы хотите представить. В общем: то, что вы пытаетесь, не будет работать! Представьте рабочий пример: (сокращенный) XML и рабочий оператор с буквально написанным '.modify()'. Затем объясните, какую часть вы хотите динамически менять, и надейтесь, что кто-то может предложить решение. – Shnugo