Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

OpenXML - читается только первый элемент

422
15 марта 2010 года
Dimarik
181 / / 12.02.2005
Добрый день!

Необходимо прочитать xml, делаю так:

Код:
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


в итоге всегда читается только первый элемент, т.е. выводит "str1", в чём может быть причина?
385
15 марта 2010 года
SomewherSomehow
477 / / 25.07.2004
 
Код:
select
    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)

Это удобно если идет работа с колонкой XML и требуется обработать каждую строку. Позволяет избежать курсоров.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог