Нужно ли использовать T-SQL Rowset? - PullRequest
1 голос
/ 06 июля 2010

Итак, я пытаюсь преобразовать веб-сервис, который был приложением Oracle, в T-SQL. Самое интересное, что у меня есть только код веб-службы и вообще нет кода базы данных. Я вижу, что есть входной параметр, который содержит <ROWSET><ROW NUM=\"1\"><TRANSACTIONID>123456</TRANSACTIONID></ROW></ROWSET>

Я просматриваю документы по T-SQL и не могу найти ничего полезного в том, что я могу сделать с этим xml. Насколько я понимаю, он используется для вставки значений в таблицу, так как элементы не будут похожи при каждом вызове.

Любая помощь будет оценена.

1 Ответ

2 голосов
/ 06 июля 2010

Предполагая, что XML является параметром для вашего T-SQL хранимого процесса или функции, вы можете использовать утилиту OPENXML для работы с данными этого типа. Вот полный пример (для наглядности сохранил):

DECLARE @idoc int
DECLARE @doc varchar(1000)
SET @doc ='
<people>
  <person id="1">
    <firstname>John</firstname>
    <surname>Doe</surname>
  </person>
  <person id="2">
    <firstname>Mary</firstname>
    <surname>Jane</surname>
  </person>
</people>
'
/* 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, '/people/person',1)
            WITH (id varchar(20),
                  firstname varchar(20) 'firstname',
                  surname varchar(20) 'surname')
EXECUTE sp_xml_removedocument @idoc

Результат:

id  firstname       surname
1   John            Doe
2   Mary            Jane
...