USP_EDUCATIONALHISTORYSTATUS_MOVE
Moves educational history statuses up or down in sequence.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@SEQUENCECHANGE | int | IN | |
@CHANGEAGENTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_EDUCATIONALHISTORYSTATUS_MOVE
(
@ID uniqueidentifier,
@SEQUENCECHANGE int = 1,
@CHANGEAGENTID uniqueidentifier = null
)
as
begin
-- See if we are making any change at all
if (@SEQUENCECHANGE <> 0)
begin
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @CURRENTDATE datetime = getdate()
-- Get the original sequence for the item
declare @ORGSEQUENCE int = (select SEQUENCE from dbo.EDUCATIONALHISTORYSTATUS where ID = @ID);
-- get the next higher/lower item's SEQUENCE
declare @SWAPSEQUENCE int;
select
@SWAPSEQUENCE = case when @SEQUENCECHANGE < 0 then max(SEQUENCE) else min(SEQUENCE) end
from dbo.EDUCATIONALHISTORYSTATUS
where
((@SEQUENCECHANGE > 0 and SEQUENCE > @ORGSEQUENCE)
or (@SEQUENCECHANGE < 0 and SEQUENCE < @ORGSEQUENCE))
if @SWAPSEQUENCE is not null
-- handle both in single update due to possible uniqueness constraint
update dbo.EDUCATIONALHISTORYSTATUS
set SEQUENCE =
case when ID = @ID
then @SWAPSEQUENCE
else @ORGSEQUENCE
end,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where
SEQUENCE in (@ORGSEQUENCE, @SWAPSEQUENCE)
end
return 0;
end