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

Откуда:
Сообщений: 131
declare @h1 int, @keys xml

set @keys = '<root>
<row _Table="_Document629" _Column="_IDRRef" _Key="_IDRRef" _Type="binary" _Length="(16)" _Table1C="Документы.ВозвратТовара" _type_16="AAACdQ==">
<_query>
<root>
<row _querySelect="set @xml = ( Select * from _AccumReg60 with (nolock) where _RecorderRRef=@RecorderRRef and _RecorderTRef=@RecorderTRef for xml raw, root, binary base64)" _queryDelete="delete d from _AccumReg60 d with (nolock) where _RecorderRRef=@RecorderRRef and _RecorderTRef=@RecorderTRef" _table="_AccumReg60" _waitReg="0" />
<row _querySelect="set @xml = ( Select * from _AccumReg56 with (nolock) where _RecorderRRef=@RecorderRRef and _RecorderTRef=@RecorderTRef for xml raw, root, binary base64)" _queryDelete="delete d from _AccumReg56 d with (nolock) where _RecorderRRef=@RecorderRRef and _RecorderTRef=@RecorderTRef" _table="_AccumReg56" _waitReg="0" />
<row _querySelect="set @xml = ( Select * from _AccumReg48 with (nolock) where _RecorderRRef=@RecorderRRef and _RecorderTRef=@RecorderTRef for xml raw, root, binary base64)" _queryDelete="delete d from _AccumReg48 d with (nolock) where _RecorderRRef=@RecorderRRef and _RecorderTRef=@RecorderTRef" _table="_AccumReg48" _waitReg="0" />
<row _querySelect="set @xml = ( Select * from _AccumReg43 with (nolock) where _RecorderRRef=@RecorderRRef and _RecorderTRef=@RecorderTRef for xml raw, root, binary base64)" _queryDelete="delete d from _AccumReg43 d with (nolock) where _RecorderRRef=@RecorderRRef and _RecorderTRef=@RecorderTRef" _table="_AccumReg43" _waitReg="0" />
<row _querySelect="set @xml = ( Select * from _AccumReg79 with (nolock) where _RecorderRRef=@RecorderRRef and _RecorderTRef=@RecorderTRef for xml raw, root, binary base64)" _queryDelete="delete d from _AccumReg79 d with (nolock) where _RecorderRRef=@RecorderRRef and _RecorderTRef=@RecorderTRef" _table="_AccumReg79" _waitReg="0" />
<row _querySelect="set @xml = ( Select * from _Sequence195 with (nolock) where _RecorderRRef=@RecorderRRef and _RecorderTRef=@RecorderTRef for xml raw, root, binary base64)" _queryDelete="delete d from _Sequence195 d with (nolock) where _RecorderRRef=@RecorderRRef and _RecorderTRef=@RecorderTRef" _table="_Sequence195" _waitReg="0" />
<row _querySelect="set @xml = ( Select * from _Document629_VT645 with (nolock) where _Document629_IDRRef=@RecorderRRef for xml raw, root, binary base64)" _queryDelete="delete d from _Document629_VT645 d with (nolock) where _Document629_IDRRef=@RecorderRRef " _table="_Document629_VT645" _waitReg="1" />
<row _querySelect="set @xml = ( Select * from _Document629 with (nolock) where _IDRRef=@RecorderRRef for xml raw, root, binary base64)" _queryDelete="delete d from _Document629 d with (nolock) where _IDRRef=@RecorderRRef " _table="_Document629" _waitReg="1" />
</root>
</_query>
</row>
</root>'
exec sp_xml_preparedocument @h1 output, @keys

Select [_Table], [_Table1C], cast([_query].value('.','varbinary(max)')as xml) _query
from openxml(@h1, '/root/row')
with
(
_Table nvarchar(128),
_Table1C nvarchar(128),
_query xml './@_query/node()'
)
exec sp_xml_removedocument @h1

--Как получить последнее поле "_query"
14 сен 09, 15:32    [7656133]     Ответить | Цитировать Сообщить модератору
 Re: Получение xml из xml  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

с собакой - это атрибуты. а здесь - элемент.

_query xml './_query/node()'

а вот этот финт что должен означать? почему просто _query не взять?

> cast([_query].value('.','varbinary(max)')as xml) _query


Posted via ActualForum NNTP Server 1.4

14 сен 09, 15:39    [7656184]     Ответить | Цитировать Сообщить модератору
 Re: Получение xml из xml  [new]
god44
Member

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

Это наверное я пытался ... но ничего не получилось
14 сен 09, 15:48    [7656256]     Ответить | Цитировать Сообщить модератору
 Re: Получение xml из xml  [new]
god44
Member

Откуда:
Сообщений: 131
daw,
Мне и нужен атрибут
Это одна строка таблицы

Структура

CREATE TABLE [dbo].[PIT_Keys](
[_Table] [nvarchar](128) NULL,
[_Column] [nvarchar](128) NULL,
[_Key] [nvarchar](128) NULL,
[_Position_Bit] [int] NULL,
[_Bit_Key] [int] NULL,
[_Type] [nvarchar](50) NULL,
[_Length] [nvarchar](10) NULL,
[_Type_Acc] [nvarchar](128) NULL,
[_Resource] [bit] NULL,
[_CountED] [int] NULL,
[_CountRes] [int] NULL,
[_UID] [binary](16) NULL,
[_Table1C] [varchar](128) NULL,
[_query] [xml] NULL,
[_type_16] [binary](4) NULL
) ON [PRIMARY]

Код xml получен запросом
Select * from pit_keys for xml raw, root, binary base64
14 сен 09, 15:53    [7656297]     Ответить | Цитировать Сообщить модератору
 Re: Получение xml из xml  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> Мне и нужен атрибут
> Это одна строка таблицы

не понял мысль, если честно.

Posted via ActualForum NNTP Server 1.4

14 сен 09, 15:58    [7656333]     Ответить | Цитировать Сообщить модератору
 Re: Получение xml из xml  [new]
god44
Member

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

_Table это атрибут или элемент?
14 сен 09, 16:03    [7656368]     Ответить | Цитировать Сообщить модератору
 Re: Получение xml из xml  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> _Table это атрибут или элемент?

атрибут

Posted via ActualForum NNTP Server 1.4

14 сен 09, 16:04    [7656381]     Ответить | Цитировать Сообщить модератору
 Re: Получение xml из xml  [new]
god44
Member

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

_query тоже атрибут
14 сен 09, 16:06    [7656397]     Ответить | Цитировать Сообщить модератору
 Re: Получение xml из xml  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> _query тоже атрибут

то есть, как это? в приведенном xml это элемент.
а надо чтобы атрибут был?

Posted via ActualForum NNTP Server 1.4

14 сен 09, 16:11    [7656429]     Ответить | Цитировать Сообщить модератору
 Re: Получение xml из xml  [new]
god44
Member

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

Посмотрите на структуру приведенной таблицы
и запрос которым я получил этот xml
там поле _query оно xml
14 сен 09, 16:16    [7656474]     Ответить | Цитировать Сообщить модератору
 Re: Получение xml из xml  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> Посмотрите на структуру приведенной таблицы
> и запрос которым я получил этот xml
> там поле _query оно xml

если хочется его как атрибут получить, придется приводить
к чему-то другому - к varbinary, например.

Posted via ActualForum NNTP Server 1.4

14 сен 09, 16:25    [7656539]     Ответить | Цитировать Сообщить модератору
 Re: Получение xml из xml  [new]
god44
Member

Откуда:
Сообщений: 131
daw,
к varbinary именно при формировании xml
Не select * ....
А select поле1, ..., cast(_query as varbinary(max)) _query from табла for xml raw, root, binary base64

Так?
14 сен 09, 16:28    [7656560]     Ответить | Цитировать Сообщить модератору
 Re: Получение xml из xml  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> к varbinary именно при формировании xml
> Не select * ....
> А select поле1, ..., cast(_query as varbinary(max)) _query from табла
> for xml raw, root, binary base64
>
> Так?

ага.

Posted via ActualForum NNTP Server 1.4

14 сен 09, 16:35    [7656605]     Ответить | Цитировать Сообщить модератору
 Re: Получение xml из xml  [new]
god44
Member

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

Странно что запихнуть в xml может а восстановить не может.
14 сен 09, 16:37    [7656617]     Ответить | Цитировать Сообщить модератору
 Re: Получение xml из xml  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> Странно что запихнуть в xml может а восстановить не может.

как это не может? или хочется без with?

Posted via ActualForum NNTP Server 1.4

14 сен 09, 16:42    [7656662]     Ответить | Цитировать Сообщить модератору
 Re: Получение xml из xml  [new]
god44
Member

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

Хочется не
select поле1, ..., cast(_query as varbinary(max)) _query from табла
а
select поле1, ..., _query from табла
14 сен 09, 16:44    [7656683]     Ответить | Цитировать Сообщить модератору
 Re: Получение xml из xml  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> Хочется не
> select поле1, ..., cast(_query as varbinary(max)) _query from табла
> а
> select поле1, ..., _query from табла

ну и оставьте второй вариант.
ну, будет _query подэлементом, а не атрибутом, что в этом страшного?

Posted via ActualForum NNTP Server 1.4

14 сен 09, 16:48    [7656717]     Ответить | Цитировать Сообщить модератору
 Re: Получение xml из xml  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> ну и оставьте второй вариант.
> ну, будет _query подэлементом, а не атрибутом, что в этом страшного?

без явного сопоставления
_query xml './_query/node()'
тогда не обойтись, правда, - это есть такое дело.

Posted via ActualForum NNTP Server 1.4

14 сен 09, 16:54    [7656762]     Ответить | Цитировать Сообщить модератору
 Re: Получение xml из xml  [new]
TimonSP
Member

Откуда:
Сообщений: 107
Select [_Table], [_Table1C], [_query]
from openxml(@h1, '/root/row') 
with 
(
_Table nvarchar(128),
_Table1C nvarchar(128),
_query xml './_query/*' -- Или _query xml './_query/node()'
)
?
14 сен 09, 17:01    [7656817]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить