declare @idDoc int, @myXML xml
declare @t table([value] varchar(8000))
Set @myXML='<root><a>str1</a><a>str2</a></root>'
EXEC sp_xml_preparedocument @idDoc OUTPUT, @myXML
insert into @t ([value])
select variant
from openxml(@idDoc, 'root', 2)
with (variant varchar(8000) 'a');
EXEC sp_xml_removedocument @idDoc
select * from @t
OpenXML - читается только первый элемент
Необходимо прочитать xml, делаю так:
Код:
в итоге всегда читается только первый элемент, т.е. выводит "str1", в чём может быть причина?
Код:
select
variant
from
openxml(@idDoc, '/root/a')
with (variant varchar(8000) '.');
variant
from
openxml(@idDoc, '/root/a')
with (variant varchar(8000) '.');
Если используется 2005 сервер, можно использовать x-query, например вот так:
Код:
declare @idDoc int, @myXML xml
declare @t table([value] varchar(8000))
Set @myXML='<root><a>str1</a><a>str2</a></root>'
select
mytable.a.value('.','varchar(10)')
from
@myXML.nodes('/root/a') mytable(a)
declare @t table([value] varchar(8000))
Set @myXML='<root><a>str1</a><a>str2</a></root>'
select
mytable.a.value('.','varchar(10)')
from
@myXML.nodes('/root/a') mytable(a)
Это удобно если идет работа с колонкой XML и требуется обработать каждую строку. Позволяет избежать курсоров.