惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Stack Overflow Blog
Stack Overflow Blog
T
Tailwind CSS Blog
Recent Announcements
Recent Announcements
宝玉的分享
宝玉的分享
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
P
Proofpoint News Feed
D
Docker
Google DeepMind News
Google DeepMind News
aimingoo的专栏
aimingoo的专栏
B
Blog RSS Feed
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
M
MIT News - Artificial intelligence
云风的 BLOG
云风的 BLOG
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
WordPress大学
WordPress大学
IT之家
IT之家
H
Help Net Security
Apple Machine Learning Research
Apple Machine Learning Research
Martin Fowler
Martin Fowler
S
SegmentFault 最新的问题
B
Blog
D
DataBreaches.Net

博客园 - AssionSoft

面向对象开发中的对象构建(但是我们实际开发真的面向对象了吗?) 关于近期在网上看到很多招聘.NET开发的都要求懂ASP.NET MVC了 为什么?这到底是为什么?怎么会这样?天啊!因为什么啊? 面向销售人员和普通白领的个人SAAS服务软件大调查! 求职也是种无奈,早上搞了个求职Mail群发器! 求职真是个痛苦的过程! 白领理财计帐小软件,钱花的不明不白做个软件帮我理财! 性能陷井 北京.NET软件工程师求职,有招人的快来看看 使用电脑休息提醒专家第二版! 做的一个小程序,定时提醒休息。预防颈椎病人人有责! .net软件工程师求职(大连) 图片水印批量附加器(玩一玩,十年少) 换工作求职! 明星、炒作、FANS 最近开发智能网站发现的使用方法! 关于程序员的1号职业病-颈椎病 毕业生找工作,能给个发展机会的请进来看看! 2007年11月8日,我的博客开通的日子!
写了一个用于排序的存储过程,很笨很简单的代码!
AssionSoft · 2007-11-16 · via 博客园 - AssionSoft

代码实现很简单,跟据传入的记录ID,参数 up,down,top,eof就可以实现上移,下移,置顶,置尾的功能了!!

上移:本记录与上条记录的序号字段进行交换,如果为第一条记录提示错误
下移:本记录与下条记录的序号字段进行交换,如果为最后一条记录提示错误
置顶:本记录置为1,如果已为第一条提示否则小于本记录序号的记录全部+1
置尾:本记录置为序号的最大值,如果已是最大值返回提示否则置为最大值,大于它的记录全部-1

注:使用本过程还要注意删除记录的时候同时要把大于被删除记录序号的字段全部-1,这样才能保证记录的连续性!

思路简单,性能低下呵呵!

CREATE PROCEDURE AdminClass_MoveMingzhan(@nID int,@Moves varchar(20),@OutId int OUTPUT)

AS


IF @Moves='up'

     
IF (SELECT Mz_Top FROM Dh_Mingzhan WHERE Mz_ID=@nID)-1=0
         
SET @OutId=10001
     
ELSE
         
BEGIN
         
UPDATE Dh_Mingzhan SET Mz_Top=Mz_Top+1 WHERE Mz_Top=(SELECT Mz_Top FROM Dh_Mingzhan WHERE Mz_ID=@nID)-1
         
UPDATE Dh_Mingzhan SET  Mz_Top=Mz_Top-1 WHERE Mz_ID=@nID
         
SET @OutId=100
         
END
IF @Moves='down'
      

     
IF (SELECT Mz_Top FROM Dh_Mingzhan WHERE Mz_ID=@nID)=(SELECT MAX(Mz_Top) FROM Dh_Mingzhan)
         
SET @OutId=10002
     
ELSE
         
BEGIN
         
UPDATE Dh_Mingzhan SET Mz_Top=Mz_Top-1 WHERE Mz_Top=(SELECT Mz_Top FROM Dh_Mingzhan WHERE Mz_ID=@nID)+1
         
UPDATE Dh_Mingzhan SET Mz_Top=Mz_Top+1 WHERE Mz_ID=@nID
         
SET @OutId=100
         
END
IF @Moves='top'
   
     
IF(SELECT Mz_Top FROM Dh_Mingzhan WHERE Mz_ID=@nID)=1
         
SET @OutId=10003
     
ELSE
         
BEGIN
         
UPDATE Dh_Mingzhan SET Mz_Top=Mz_Top+1 WHERE Mz_Top<(SELECT Mz_Top FROM Dh_Mingzhan WHERE Mz_ID=@nID)
         
UPDATE Dh_Mingzhan SET Mz_Top=1 WHERE Mz_ID=@nID
         
SET @OutId=100
         
END
IF @Moves='eof'

     
IF(SELECT Mz_Top FROM Dh_Mingzhan WHERE Mz_ID=@nID)=(SELECT MAX(Mz_Top) FROM DH_Mingzhan)
         
SET @OutId=10004
     
ELSE
         
BEGIN
         
DECLARE @MaxTop INT
         
SET @MaxTop=(SELECT MAX(Mz_Top) FROM Dh_Mingzhan)
         
UPDATE Dh_Mingzhan SET Mz_Top=Mz_Top-1 WHERE Mz_Top>(SELECT Mz_Top FROM Dh_Mingzhan WHERE Mz_ID=@nID)
         
UPDATE Dh_Mingzhan SET Mz_Top=@MaxTop  WHERE Mz_ID=@nID
         
SET @OutId=100
         
END
GO