Monday, July 21, 2014

Saving List of Object in SqlServer by XML

CREATE proc [dbo].[BCKUP_usp_AddUserProducts]
@ProductXml xml

as

insert into dbo.Vendor_Product
(
VendorProductGUID
,ProductGUID
,ProductName
,MRP
,SellingPrice
,Description
,UnitValue
,UnitId
,BarCode
,VendorId
,AddedDate
,ProductImage
,Active
)

SELECT
   Product.value('(VendorProductGUID)[1]', 'varchar(50)') AS 'VendorProductGUID',
   Product.value('(ProductGUID)[1]', 'uniqueidentifier') AS 'ProductGUID',
   Product.value('(ProductName)[1]', 'varchar(50)') AS 'ProductName',
   Product.value('(MRP)[1]', 'money') AS 'MRP',
   Product.value('(SellingPrice)[1]', 'money') AS 'SellingPrice',
   Product.value('(Description)[1]', 'varchar(max)') AS 'Description',
   Product.value('(UnitValue)[1]', 'float') AS 'UnitValue',
   Product.value('(UnitId)[1]', 'tinyint') AS 'UnitId',
   Product.value('(BarCode)[1]', 'varchar(50)') AS 'BarCode',
   Product.value('(VendorId)[1]', 'uniqueidentifier') AS 'VendorId',
   Product.value('(AddedDate)[1]', 'DateTime') AS 'AddedDate',
   Product.value('(ProductImage)[1]', 'int') AS 'ProductImage',
   Product.value('(Active)[1]', 'bit') AS 'Active'
FROM
   @ProductXml.nodes('/ArrayOfVendorProduct/VendorProduct') AS AOC(Product)


/* Following statement is for removing entries from other table , not relevant*/

delete from Vendor_Product_Stagging where VendorProductGUID in
(
SELECT
  Product.value('(VendorProductGUID)[1]', 'varchar(50)') AS 'VendorProductGUID'
  FROM  @ProductXml.nodes('/ArrayOfVendorProduct/VendorProduct') AS AOC(Product)
)




No comments:

Post a Comment