2010-11-02 2 views
1

В основном я хочу отправить блок xml в качестве параметра в my sql sql 2005 db, который анализируется и вставляет данные строки.tsql: проанализировать XML для создания операторов вставки

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

У меня есть метод в C#, который вызывает мой хранимый proc в цикле для вставки данных, но я надеюсь, что смогу форматировать данные в xml и вставить все это в один звонок.

ответ

1

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

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

Я сделал это довольно часто. Начиная с SQL Server 2005 предоставляется встроенный XML data type, а также methods для запроса (через XQuery). ADO.NET также добавила поддержку с перечислением SqlDbType.Xml и классом SqlXml. См. Статью "XML Data Type Support in ADO.NET 2.0: Handling XML from SQL Server 2005" для нескольких примеров.

Смежные вопросы