To insert records from XML data into SQL Server database table, we use XML data type as input parameter.
Create a stored procedure like below with Xml as input parameter type.
CREATE PROCEDURE InsertPersonalDetailsFromXML -- Add the parameters for the stored procedure here @xmlData XML AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for procedure here INSERT INTO PersonalDetails (FirstName, LastName, Age, Active) SELECT x.value('FirstName[1]', 'varchar(50)') AS FirstName, x.value('LastName[1]', 'varchar(50)') AS LastName, x.value('Age[1]', 'int') AS Age, x.value('Active[1]', 'bit') AS Active FROM @xmlData.nodes('//PersonalDetail') XmlData(x) END
Notice that the input parameter named @xmlData is of XML type. Next, we are using INSERT statement and selecting the value of each node of “PersonalDetail” to insert into PersonalDetails table.
To execute above stored procedure, call following script
DECLARE @xmlData Xml SET @xmlData = '<PersonalDetails> <PersonalDetail> <FirstName>XmlFirstName 11</FirstName> <LastName>XmlLastName 1</LastName> <Age>30</Age> <Active>1</Active> </PersonalDetail> <PersonalDetail> <FirstName>XmlFirstName 22</FirstName> <LastName>XmlLastName 2</LastName> <Age>25</Age> <Active>1</Active> </PersonalDetail> </PersonalDetails>' EXEC InsertPersonalDetailsFromXML @xmlData
Note that the @xmlData is of Xml type, here even if we change the variable type to varchar it will work as its string value is a valid Xml.
Above code snippet inserts two records into PersonalDetails database table.
Views: 41212 | Post Order: 109