tsql: анализ XML для генерации операторов вставки - PullRequest
1 голос
/ 03 ноября 2010

В основном я хочу отправить блок xml в качестве параметра в мою базу данных ms sql 2005, которая анализируется и вставляет данные строк.

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

У меня есть метод в c #, который вызывает мой сохраненный процесс в цикле для вставки данных, но я надеюсь, что яможно отформатировать данные в xml и вставить их все за один вызов.

Ответы [ 2 ]

1 голос
/ 03 ноября 2010

Взгляните на этот пример:

DECLARE @idoc int
DECLARE @doc varchar(1000)
SET @doc ='
<ROOT>
<Customer CustomerID="VINET" ContactName="Paul Henriot">
   <Order CustomerID="VINET" EmployeeID="5" OrderDate="1996-07-04T00:00:00">
      <OrderDetail OrderID="10248" ProductID="11" Quantity="12"/>
      <OrderDetail OrderID="10248" ProductID="42" Quantity="10"/>
   </Order>
</Customer>
<Customer CustomerID="LILAS" ContactName="Carlos Gonzlez">
   <Order CustomerID="LILAS" EmployeeID="3" OrderDate="1996-08-16T00:00:00">
      <OrderDetail OrderID="10283" ProductID="72" Quantity="3"/>
   </Order>
</Customer>
</ROOT>'
--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, '/ROOT/Customer',1)
            WITH (CustomerID  varchar(10),
                  ContactName varchar(20))

Это даст вам результаты:

CustomerID ContactName          
---------- -------------------- 
VINET      Paul Henriot
LILAS      Carlos Gonzlez

Если вы предоставите свой XML, я могу предоставить больше информации.

Бесстыдно похищен отсюда:

http://msdn.microsoft.com/en-us/library/aa276847%28SQL.80%29.aspx

0 голосов
/ 03 ноября 2010

Я делал это довольно часто.Начиная с SQL Server 2005, предоставляется собственный тип данных XML , а также методы для запросов (через XQuery).В ADO.NET также добавлена ​​поддержка перечисления SqlDbType.Xml и класса SqlXml .См. Статью «Поддержка типов данных XML в ADO.NET 2.0: обработка XML из SQL Server 2005» для нескольких примеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...