У меня есть XML-документ, который я хочу использовать для обновления значений в хранимой процедуре. Я могу обрабатывать XML с помощью OPENXML, но я запутался в извлечении значений, которые я хочу. Каждая строка в xml является записью продукта, и я хочу создать переменную для каждого свойства. Cell0 - это идентификатор, описание Cell2 и т. Д.SELECT текстовые значения узла из XML-документа в TSQL OPENXML
DECLARE @idoc int
DECLARE @doc varchar(1000)
SET @doc ='
<products>
<rows>
<row>
<cell>1</cell>
<cell>BALSAMO DERMOSCENT</cell>
<cell>1.00</cell>
<cell>0.00</cell>
<cell>18.00</cell>
<cell>18.00</cell>
<cell>8.00</cell>
<cell>427</cell>
<cell>No</cell>
</row>
<row>
<cell>2</cell>
<cell>BAYTRIL 150 MG 1 CPDO</cell>
<cell>1.00</cell>
<cell>0.00</cell>
<cell>3.50</cell>
<cell>3.50</cell>
<cell>8.00</cell>
<cell>57</cell>
<cell>No</cell>
</row>
</rows>
</products>'
--Create an internal representation of the XML document.
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
-- Execute a SELECT statement that uses the OPENXML rowset provider.
SELECT *
FROM OPENXML (@idoc, '/products/rows/row/cell',1)
with (Col1 varchar(29) 'text()')
Выполнение вышеуказанного запроса возвращает 1 запись для каждой КЛЕТКИ в xml. Я хочу, чтобы иметь возможность вернуть 1 запись в ряд с различными столбцами для каждой ячейки, что-то вроде: -
Prod Description Qty
---------- -------------------- --------
1 BALSAMO DERMOSCENT 1.00
2 BAYTRIL 150 MG 1 CPDO 1.00
Я использую MSSQL 2008
Было интересно об этом. +1. Почему бы не пойти дальше и не принять свой собственный ответ ;-) – 2010-12-15 13:54:28