USP_DATAFORMTEMPLATE_ADD_ENTITLEMENT

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT
@ENTITLEMENTS xml IN
@CHANGEAGENTID uniqueidentifier IN

Definition

Copy

                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_ENTITLEMENT
                    (
                        @ID uniqueidentifier = null output,
                        @ENTITLEMENTS xml,
                        @CHANGEAGENTID uniqueidentifier = null
                    ) as
                        set nocount on;

                        if @CHANGEAGENTID is null
                            exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

                        declare @DATE datetime;
                        set @DATE = getDate();

                        with cte_Entitlements as
                        (
                            select
                                t.e.value('ENTITLEMENTTYPE[1]', 'nvarchar(255)') ENTITLEMENTTYPE,
                                t.e.value('ENTITLEMENTID[1]', 'nvarchar(255)') ENTITLEMENTID
                            from @ENTITLEMENTS.nodes('/ENTITLEMENTS/ITEM') t(e)
                        )
                        merge into dbo.ENTITLEMENTCACHE TARGET
                        using cte_Entitlements SOURCE
                        on SOURCE.ENTITLEMENTTYPE = TARGET.ENTITLEMENTTYPE
                        when matched and SOURCE.ENTITLEMENTID <> TARGET.ENTITLEMENTID then
                            update 
                            set 
                            TARGET.ENTITLEMENTID = SOURCE.ENTITLEMENTID,
                            CHANGEDBYID = @CHANGEAGENTID,
                            DATECHANGED = @DATE
                        when not matched by target then
                            insert (
                                ENTITLEMENTTYPE,
                                ENTITLEMENTID,
                                ADDEDBYID,
                                CHANGEDBYID,
                                DATEADDED,
                                DATECHANGED
                            )
                            values
                            (
                                SOURCE.ENTITLEMENTTYPE,
                                SOURCE.ENTITLEMENTID,
                                @CHANGEAGENTID,
                                @CHANGEAGENTID,
                                @DATE,
                                @DATE
                            )
                        when not matched by source then
                            delete;

                        return 0;