XML Изменить значение атрибута - PullRequest
0 голосов
/ 24 апреля 2020

Я работаю над XML структурами и не могу решить проблему;

SET @V_XML.modify('replace value of (/Table/Header/Column/@readonly)[1] with "False" ')

Это работает, но '[1]' - это номер моего столбца, и я хочу сделать его параметри c.

SET @V_XML.modify('replace value of (/Table/Header/Column/@readonly)[sql:variable("@MYCOLUMNNUM")] with "False" ')

мне это не удается

пожалуйста, помогите, спасибо

1 Ответ

0 голосов
/ 24 апреля 2020

Вы не поделились своим XML, поэтому я разработал его самостоятельно.

Если вам нужно изменить значение атрибута в определенном столбце на его порядковый номер, вам нужно использовать предикат сразу после элемента Column .

SQL

-- DDL and sample data population, start
DECLARE @V_XML XML = 
(N'<Table>
    <Header>
        <Column readonly="True"></Column>
        <Column readonly="True"></Column>
        <Column readonly="True"></Column>
    </Header>
</Table>');
-- DDL and sample data population, end

DECLARE @MYCOLUMNNUM INT = 3;

-- before
SELECT @V_XML;

SET @V_XML.modify('replace value of (/Table/Header/Column[sql:variable("@MYCOLUMNNUM")]/@readonly)[1] with "False"');

-- after
SELECT @V_XML;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...