MSSQLSERVER数据库- 上移和下移的存储过程

做一下备忘

MOVEUP:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go





ALTER PROCEDURE [dbo].[Proc_MoveUp] 
    @id int
AS
BEGIN

    declare @preSort int;--上一条记录的排序值
    declare @preid int; --上一条记录的id值
    declare @curSort int;--当前记录的排序值

    with TB As (select top 1000 *,row_number() over(order by Sort desc,id desc) as rowid from T_Move order by Sort desc,id desc)
    select @preSort=sort,@preid=id from TB where rowid=(select rowid+1 from TB where id=@id);
    select @curSort=Sort From T_Move Where id=@id;

    update T_Move set Sort=@preSort where id=@id;
    update T_Move set SOrt=@curSort where id=@preid


END

MOVEDOW:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go





ALTER PROCEDURE [dbo].[Proc_MoveDown] 
    @id int
AS
BEGIN

    declare @nextSort int;--上一条记录的排序值
    declare @nextid int; --上一条记录的id值
    declare @curSort int;--当前记录的排序值

    with TB As (select top 1000 *,row_number() over(order by Sort desc,id desc) as rowid from T_Move order by Sort desc,id desc)
    select @nextSort=sort,@nextid=id from TB where rowid=(select rowid-1 from TB where id=@id);
    select @curSort=Sort From T_Move Where id=@id;

    update T_Move set Sort=@nextSort where id=@id;
    update T_Move set SOrt=@curSort where id=@nextid

END
原文地址:https://www.cnblogs.com/cxeye/p/3591067.html