存储过程实现上移下移

存储过程:

use student
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:        <Author,,Name>
-- Create date: <Create Date,,>
-- Description:    <Description,,>
-- =============================================
CREATE PROCEDURE sp_MenuTree_Sort
(    
    @MenuID VARCHAR(20),
    @SortDir BIT     --1--up;0--down
)
AS
declare @ParentID varchar(20)   --父节点id
declare @MenuID2 VARCHAR(20)    --要交换menuorder菜单项的id
declare @MenuOrder1 int
declare @MenuOrder2 int

BEGIN
    SELECT @ParentID=ParentID,@MenuOrder1 = MenuOrder froM MenuTree where MenuID = @MenuID
    IF @SortDir=1   --向上移动
    begin
     select top 1 @MenuID2=MenuID,@MenuOrder2=menuorder from MenuTree where MenuOrder < @MenuOrder1 and ParentID=@ParentID
     order by MenuOrder desc
     END
     else   --向下移动
     begin select top 1 @MenuID2=MenuID,@MenuOrder2=menuorder from MenuTree where MenuOrder>@MenuOrder1 and ParentID=@ParentID
     order by MenuOrder asc
     end
     begin TRAN
     update MenuTree set MenuOrder = @MenuOrder1 where MenuID = @MenuID2
     update MenuTree set MenuOrder = @MenuOrder2 where MenuID = @MenuID
 
     if @@ERROR = 0
     COMMIT TRAN
     ELSE
     ROLLBACK TRAN
     end


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值