Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 модификация xml  [new]
marvel
Member

Откуда:
Сообщений: 1066
Здравствуйте
Есть хмл
declare @x xml = '<Message >
    <Order id="123">
        <Book Name="SQL" Date="2017-01-25T12:08:04.280">
          <Param>
            <Customer UserFIO="Иванов" Date="2017-02-02T11:52:04"/>
			<Customer UserFIO="Петров" Date="2017-02-02T11:52:04"/>
		  </Param>
      </Book>
	   <Book Name="XML" Date="2017-01-25T12:08:04.280">
          <Param>
            <Customer UserFIO="Сидоров" Date="2017-02-02T11:52:04"/>
		  </Param>
      </Book>
    </Order>
</Message>'


не понимаю как с помощью modify сделать хмл такого вида
<Message>
  <Order id="123">
    <Book Name="SQL" Date="2017-01-25T12:08:04.280">
      <Param>
        <Customer UserFIO="Иванов" Date="2017-02-02T11:52:04" type="1" />
        <Customer UserFIO="Петров" Date="2017-02-02T11:52:04" type="1" />
      </Param>
    </Book>
    <Book Name="XML" Date="2017-01-25T12:08:04.280">
      <Param>
        <Customer UserFIO="Сидоров" Date="2017-02-02T11:52:04" type="1" />
      </Param>
    </Book>
  </Order>
</Message>


тоесть добавить новый атрибут type со значение 1


Спасибо за помощь!
17 фев 17, 11:49    [20220564]     Ответить | Цитировать Сообщить модератору
 Re: модификация xml  [new]
invm
Member

Откуда: Москва
Сообщений: 9265
declare @x xml = '<Message >
    <Order id="123">
        <Book Name="SQL" Date="2017-01-25T12:08:04.280">
          <Param>
            <Customer UserFIO="Иванов" Date="2017-02-02T11:52:04"/>
			<Customer UserFIO="Петров" Date="2017-02-02T11:52:04"/>
		  </Param>
      </Book>
	   <Book Name="XML" Date="2017-01-25T12:08:04.280">
          <Param>
            <Customer UserFIO="Сидоров" Date="2017-02-02T11:52:04"/>
		  </Param>
      </Book>
    </Order>
</Message>';

declare @p int = 1, @c int;

select @x;

select @c = @x.query('count(//Param/Customer)').value('.', 'int');
while @p <= @c
 begin
  set @x.modify('insert attribute type {1} as last into (((//Param/Customer)[position() = sql:variable("@p")])[1])');
  select @p += 1;
 end;

select @x;
17 фев 17, 12:30    [20220826]     Ответить | Цитировать Сообщить модератору
 Re: модификация xml  [new]
marvel
Member

Откуда:
Сообщений: 1066
invm,

Спасибо!
17 фев 17, 13:22    [20221051]     Ответить | Цитировать Сообщить модератору
 Re: модификация xml  [new]
naz74ru
Member

Откуда:
Сообщений: 7
Добрый день, подскажите, пож., где посмотреть синтаксис .modify('insert ...)?
Только начинаю эту тему, надо выгрузить отчёт в xml
Получил xml2 переменную:
<СвВыпл НачислСВВс3="25559.8090" ВыплОПСДогВс3="0" ВыплОПСВс3="116180.9500" СумВыплВс3="116180.9500">
<СвВыплМК НачислСВ="7920.4004" ВыплОПСДог="0" ВыплОПС="36001.8200" СумВыпл="36001.8200" КодКатЛиц="НР" Месяц="1" />
<СвВыплМК НачислСВ="8589.1454" ВыплОПСДог="0" ВыплОПС="39041.5700" СумВыпл="39041.5700" КодКатЛиц="НР" Месяц="2" />
<СвВыплМК НачислСВ="9050.2632" ВыплОПСДог="0" ВыплОПС="41137.5600" СумВыпл="41137.5600" КодКатЛиц="НР" Месяц="3" />
</СвВыпл>
Впереди много шагов, сначала как добавить элемент «СвВыплСВОПС»?

<СвВыплСВОПС>
<СвВыпл НачислСВВс3="25559.8090" ВыплОПСДогВс3="0" ВыплОПСВс3="116180.9500" СумВыплВс3="116180.9500">
<СвВыплМК НачислСВ="7920.4004" ВыплОПСДог="0" ВыплОПС="36001.8200" СумВыпл="36001.8200" КодКатЛиц="НР" Месяц="1" />
<СвВыплМК НачислСВ="8589.1454" ВыплОПСДог="0" ВыплОПС="39041.5700" СумВыпл="39041.5700" КодКатЛиц="НР" Месяц="2" />
<СвВыплМК НачислСВ="9050.2632" ВыплОПСДог="0" ВыплОПС="41137.5600" СумВыпл="41137.5600" КодКатЛиц="НР" Месяц="3" />
</СвВыпл>
</СвВыплСВОПС>

Не получается создать с помощью set @xml2.modify('insert <"СвВыплСВОПС">' '</"СвВыплСВОПС"> as first into (/)[1]');
- пишет неправильный синтаксис..
21 апр 17, 07:24    [20420761]     Ответить | Цитировать Сообщить модератору
 Re: модификация xml  [new]
naz74ru
Member

Откуда:
Сообщений: 7
Нашёл документацию
http://technet.microsoft.com/ru-ru/library/ms175466(SQL.110).aspx
21 апр 17, 07:35    [20420775]     Ответить | Цитировать Сообщить модератору
 Re: модификация xml  [new]
naz74ru
Member

Откуда:
Сообщений: 7
naz74ru
Добрый день, подскажите, пож., где посмотреть синтаксис .modify('insert ...)?
Только начинаю эту тему, надо выгрузить отчёт в xml
...

Не получается создать с помощью set @xml2.modify('insert <"СвВыплСВОПС">' '</"СвВыплСВОПС"> as first into (/)[1]');
- пишет неправильный синтаксис..

Вопрос решён построением исходного запроса select...
21 апр 17, 10:37    [20421305]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить