spBulkUpdate_EmailList_QueryRecipients
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ListID | int | IN | |
@ClearExistingData | bit | IN | |
@XML | ntext | IN |
Definition
Copy
CREATE PROCEDURE [dbo].[spBulkUpdate_EmailList_QueryRecipients]
(
@ListID as int,
@ClearExistingData bit,
@XML as ntext
)
AS
BEGIN
set nocount on
DECLARE @idoc int
DECLARE @XMLData table(
USERID int,
MailDisplay nvarchar(512) COLLATE database_default,
MailAddress nvarchar(512) COLLATE database_default,
OptOut bit,
BORECID int,
BOSYSID int,
QueryID int)
--Load Up the XML into a temporary table
EXEC sp_xml_preparedocument @idoc OUTPUT, @XML
INSERT INTO @XMLData
SELECT
U,
N,
E,
O,
BR,
BS,
Q
FROM OPENXML (@idoc, '/Recipients/R', 2)
WITH (
U int,
N nvarchar(512),
E nvarchar(512),
O bit,
BR int,
BS int,
Q int
)
EXEC sp_xml_removedocument @idoc
-- First Make sure that all of our recipients exist in the
-- Backoffice people table - w/out dupes
INSERT INTO dbo.BackOfficeSystemPeople
(BackOfficeSystemID, BackofficeRecordID)
SELECT BOSYSID, BORECID
FROM @XMLData x1
WHERE NOT EXISTS (
SELECT *
FROM dbo.BackOfficeSystemPeople p
WHERE x1.bosysid = p.BackOfficeSystemID
AND x1.borecid = p.BackofficeRecordID
)
AND BORECID > 0
if @ClearExistingData = 1
begin
-- clear out old data
delete from EmailList_People
where EmailListID = @ListID
end
-- insert new data
INSERT INTO EmailList_People(
EmailListID,
PeopleID,
EmailDisplayName,
EmailAddress,
QueryID,
GlobalOptOut)
SELECT
@ListID,
p.[id],
MailDisplay,
MailAddress,
QueryID,
OptOut
FROM @XMLData x1
left outer join dbo.BackOfficeSystemPeople p
on x1.bosysid = p.BackOfficeSystemID and
x1.borecid = p.BackofficeRecordID
END