February 28, 2012

Save multiple record in sql server via XML



DECLARE @index int
DECLARE @xmlString varchar(8000)
SET @xmlString =
     '<Persons>
<Person id="1">
<Name> name1 </Name>
<PhoneNo> 022-2366854 </PhoneNo>
</Person>
<Person id="2">
<Name> name2 </Name>
<PhoneNo> 011-33366854 </PhoneNo>
</Person>'

EXEC sp_xml_preparedocument @index OUTPUT, @xmlString

SELECT * FROM OPENXML(@index, 'Persons/Person')
WITH (id Varchar(10)  , Name1 varchar(100) 'Name' , PhoneNo1 Varchar(50) 'PhoneNo')

EXEC sp_xml_removedocument @index


EXAMPLE 2
=====================



DECLARE @xmlDoc NVARCHAR(200)
DECLARE @handle INT
SET @xmlDoc = N'
  <authors>
    <au_id>
<au_id1>409</au_id1>
<au_id2>56</au_id2>
<au_id3>7008</au_id3>
</au_id>
    <au_lname>Bennet</au_lname>
    <au_fname>Abraham</au_fname>
  </authors>
'
EXEC sp_xml_preparedocument @handle OUTPUT, @xmlDoc
SELECT * FROM OPENXML (@handle, '/authors',3) WITH
  (au_id3 VARCHAR(20) 'au_id/au_id3' ,
   au_lname NVARCHAR(20) ,
   au_fname NVARCHAR(20)
  )
EXEC sp_xml_removedocument @handle


OPUTPUT
------------------------------------
au_id3 | au_lname | au_fname
------------------------------------
7008   | Bennet     | Abraham