Bulk Insert Update Delete sql stored procs

2010-06-13

CREATE PROCEDURE qspBulkAddUpdateDeleteXML
(
@XMLDoc XML
)AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

DECLARE @hdoc INT

EXEC sp_xml_preparedocument @hdoc OUTPUT, @XMLDoc


INSERT INTO Table
(

Field1,
Field2,
Field3
)
SELECT
XMLTableInsert.F1,
XMLTableInsert.F2,
XMLTableInsert.F3
FROM OPENXML(@hdoc, 'TBDBOQAttachmentDetailsList/TBDBOQAttachmentDetails/Insert')
WITH
(
F1 INT 'XMLTagForField1',
F2 INT 'XMLTagForField2',
F3 VARCHAR(250) 'XMLTagForField3'
)AS XMLTableInsert


UPDATE TBDBOQAttachmentDetails
SET
AttachmentPath = XMLTableUpdate.AttachmentPath
FROM OPENXML(@hdoc, 'TBDBOQAttachmentDetailsList/TBDBOQAttachmentDetails/Update')
WITH
(
TBDBOQAttachmentDetailsID INT 'TBDBOQAttachmentDetailsID',
AttachmentPath VARCHAR(250) 'AttachmentPath'
)AS XMLTableUpdate
WHERE
TBDBOQAttachmentDetails.TBDBOQAttachmentDetailsID = XMLTableUpdate.TBDBOQAttachmentDetailsID

DELETE FROM TBDBOQAttachmentDetails
WHERE TBDBOQAttachmentDetails.TBDBOQAttachmentDetailsID IN
(
SELECT TBDBOQAttachmentDetailsID FROM
OPENXML(@hdoc, 'TBDBOQAttachmentDetailsList/TBDBOQAttachmentDetails/Delete')
WITH
(
TBDBOQAttachmentDetailsID INT 'TBDBOQAttachmentDetailsID'
)
)


END



0 comments: