USP_EVENT_UNDOLASTRUN

Executes the "Event Conflict: Undo Last Scheduling Run" record operation.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN Input parameter indicating the ID of the record being deleted.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the delete.

Definition

Copy


                    CREATE procedure dbo.USP_EVENT_UNDOLASTRUN
                    (
                        @ID uniqueidentifier,
                        @CHANGEAGENTID uniqueidentifier
                    )
                    as 
                        set nocount on;

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

                        declare @SCHID uniqueidentifier;
                        set @SCHID = dbo.UFN_PROGRAM_GETLASTSCHEDULEID(@ID);

                        declare @e int;
                        declare @contextCache varbinary(128);

                        /* cache current context information */
                        set @contextCache = CONTEXT_INFO();

                        /* set CONTEXT_INFO to @CHANGEAGENTID */
                        if not @CHANGEAGENTID is null
                            set CONTEXT_INFO @CHANGEAGENTID;

                        delete from dbo.EVENT where SCHEDULEID = @SCHID;

                        declare @EVENTCONFLICTSTODELETE table (ID uniqueidentifier);

                        insert into @EVENTCONFLICTSTODELETE(ID)
                        select ID from dbo.EVENTCONFLICT where SCHEDULEID = @SCHID;

                        delete from dbo.PROGRAMEVENTLOCATION
                        where EVENTCONFLICTID in (select ID from @EVENTCONFLICTSTODELETE);

                        delete from dbo.EVENTRESOURCE
                        where EVENTCONFLICTID in (select ID from @EVENTCONFLICTSTODELETE);

                        delete from dbo.EVENTSTAFFRESOURCE
                        where EVENTCONFLICTID in (select ID from @EVENTCONFLICTSTODELETE);

                        delete from dbo.EVENTCONFLICT
                        where ID in (select ID from @EVENTCONFLICTSTODELETE);

                        /* reset CONTEXT_INFO to previous value */
                        if not @contextCache is null
                            set CONTEXT_INFO @contextCache;

                        select @e=@@error;

                        if @e<>0 return -456; --always return non-zero sp result if an error occurs


                        return 0;