数据排序存储过程

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER PROCEDURE [dbo].[SetTaskPosition]
 @TaskID uniqueidentifier,
 @Position int
AS

 DECLARE @ListID uniqueidentifier
 DECLARE @OldPosition int
 
 SELECT
  @ListID = ListID, @OldPosition = ListOrder
 FROM
  Tasks
 WHERE TaskID = @TaskID
 
 IF @Position < @OldPosition
 BEGIN
 
  UPDATE Tasks
  SET
   ListOrder = ListOrder + 1
  WHERE
   ListID = @ListID AND ListOrder >= @Position AND ListOrder < @OldPosition
 
  UPDATE TOP(1) Tasks
  SET
   ListOrder = @Position
  WHERE
   TaskID = @TaskID
 
 END
 ELSE IF @Position > @OldPosition
 BEGIN

  UPDATE Tasks
  SET
   ListOrder = ListOrder - 1
  WHERE
   ListID = @ListID AND ListOrder > @OldPosition AND ListOrder <= @Position
  
  UPDATE TOP(1) Tasks
  SET
   ListOrder = @Position
  WHERE
   TaskID = @TaskID

 END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值