Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 OPENXML - атрибуты и элементы одним запросом  [new]
_raddd
Guest
Добрый день, уважаемые форумчане.
Никогда не сталкивался с xml, да вот пришлось ...
нужно получить таблицу состоящую и из атрибутов и из элементов
пробывал так
declare @hdoc int

declare @@Doc varchar(8000)

set @@Doc =
'
<?xml version="1.0" encoding="windows-1251" ?>
<shop>
    <categories>
      <category id="1" parentId="4">Пылесосы</category>
      <category id="2" parentId="5041">Стиральные машины</category>
    </categories>
</shop>'

--Create an internal representation of the XML document
exec sp_xml_preparedocument @hdoc output, @@Doc

-- Execute a SELECT statement that uses the OPENXML rowset provider
select * from OPENXML(@hdoc, '/shop/categories/category', 3)
with (
id int 'id',
parentId int 'parentId',
category varchar(1000) 'text()')

-- Clear the XML document from memory
EXEC sp_xml_removedocument @hdoc 
но в результате
id          parentId   category                                                
----------- ----------- -----------------
NULL        NULL        Пылесосы
NULL        NULL        Стиральные машины
SELECT @@VERSION

Microsoft SQL Server  2000 - 8.00.194 (Intel X86) 
	Aug  6 2000 00:57:48 
	Copyright (c) 1988-2000 Microsoft Corporation
	Desktop Engine on Windows NT 5.1 (Build 2600: Service Pack 2)
Зараннее спасибо
8 сен 09, 11:48    [7630591]     Ответить | Цитировать Сообщить модератору
 Re: OPENXML - атрибуты и элементы одним запросом  [new]
daw
Member

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

id int '@id',
parentId int '@parentId',

Posted via ActualForum NNTP Server 1.4

8 сен 09, 11:50    [7630603]     Ответить | Цитировать Сообщить модератору
 Re: OPENXML - атрибуты и элементы одним запросом  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
declare @Doc xml
set @Doc = '<?xml version="1.0" encoding="windows-1251" ?>
<shop>
    <categories>
      <category id="1" parentId="4">Пылесосы</category>
      <category id="2" parentId="5041">Стиральные машины</category>
    </categories>
</shop>'

select cat.value('@id', 'int') as id
      ,cat.value('@parentId', 'int') as parentId
      ,cat.value('text()[1]', 'varchar(20)') as category
  from @Doc.nodes('/shop/categories/category') as t(cat)

id          parentId    category
----------- ----------- --------------------
1           4           Пылесосы
2           5041        Стиральные машины

(2 row(s) affected)
8 сен 09, 11:52    [7630623]     Ответить | Цитировать Сообщить модератору
 Re: OPENXML - атрибуты и элементы одним запросом  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
_raddd
Microsoft SQL Server 2000 - 8.00.194 (Intel X86)
Извините, сразу не увидел
8 сен 09, 11:53    [7630629]     Ответить | Цитировать Сообщить модератору
 Re: OPENXML - атрибуты и элементы одним запросом  [new]
_raddd
Guest
daw,

Большое спасибо!!
оказуется всё так просто)))
8 сен 09, 11:53    [7630636]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить