USP_WPSEARCHHISTORY_GETCONSTITUENTS_UPDATEFROMXML

Parameters

Parameter Parameter Type Mode Description
@WPSEARCHHISTORYID uniqueidentifier IN
@XML xml IN

Definition

Copy
/*
Generated by Blackbaud AppFx Platform
Date:  11/11/2014 4:09:33 PM
Assembly Version:  Blackbaud.AppFx.Platform.SqlClr, Version=4.0.2.0, Culture=neutral, PublicKeyToken=null
Copyright Blackbaud
*/
CREATE PROCEDURE dbo.USP_WPSEARCHHISTORY_GETCONSTITUENTS_UPDATEFROMXML 
(
@WPSEARCHHISTORYID uniqueidentifier,
@XML xml
)

as

set nocount on;

-- build a temporary table containing the values from the XML

declare @TempTbl table (
   [CONSTITUENTID] uniqueidentifier,
   [ID] uniqueidentifier)

insert into @TempTbl select 
    [CONSTITUENTID],
    [ID] 
from dbo.UFN_WPSEARCHHISTORY_GETCONSTITUENTS_FROMITEMLISTXML(@XML)

update @TempTbl set ID = newid() where (ID is null) or (ID = '00000000-0000-0000-0000-000000000000');

if @@Error <> 0
    return 1;

declare @e int;

-- delete any items that no longer exist in the XML table

delete from dbo.[WPSEARCHHISTORYSELECTEDCONSTITUENT] where [WPSEARCHHISTORYSELECTEDCONSTITUENT].ID in 
    (select ID from dbo.UFN_WPSEARCHHISTORY_GETCONSTITUENTS
    (
        @WPSEARCHHISTORYID
    )
    EXCEPT select ID from @TempTbl)    

select @e=@@error;

if @e <> 0
    return 2;

-- update the items that exist in the XML table and the db

update [WPSEARCHHISTORYSELECTEDCONSTITUENT]
        set [WPSEARCHHISTORYSELECTEDCONSTITUENT].[CONSTITUENTID]=temp.[CONSTITUENTID],
        [WPSEARCHHISTORYSELECTEDCONSTITUENT].[ID]=temp.[ID]

    from dbo.[WPSEARCHHISTORYSELECTEDCONSTITUENT] inner join @TempTbl as [temp] on [WPSEARCHHISTORYSELECTEDCONSTITUENT].ID = [temp].ID
    where ([WPSEARCHHISTORYSELECTEDCONSTITUENT].[CONSTITUENTID]<>temp.[CONSTITUENTID]) or 
        ([WPSEARCHHISTORYSELECTEDCONSTITUENT].[CONSTITUENTID] is null and temp.[CONSTITUENTID] is not null) or 
        ([WPSEARCHHISTORYSELECTEDCONSTITUENT].[CONSTITUENTID] is not null and temp.[CONSTITUENTID] is null) or 
        ([WPSEARCHHISTORYSELECTEDCONSTITUENT].[ID]<>temp.[ID]) or 
        ([WPSEARCHHISTORYSELECTEDCONSTITUENT].[ID] is null and temp.[ID] is not null) or 
        ([WPSEARCHHISTORYSELECTEDCONSTITUENT].[ID] is not null and temp.[ID] is null)

if @@Error <> 0
    return 3;    

-- insert new items

insert into [WPSEARCHHISTORYSELECTEDCONSTITUENT] 
    ([WPSEARCHHISTORYID], 
    [CONSTITUENTID],
    [ID])
select @WPSEARCHHISTORYID
    [CONSTITUENTID],
    [ID]
from @TempTbl as [temp]
where not exists (select ID from dbo.[WPSEARCHHISTORYSELECTEDCONSTITUENT] as data where data.ID = [temp].ID)

if @@Error <> 0
    return 4;

return 0;