-- 定位数据
-- 设计思路:
-- 保存要被移动记录的原主键值和新主键值(如果有主键的话),然后比较两个主键值的大小(记录信息按升序排列),
-- 如果原主键值大,表明该记录被移动到前面的新位置,可将原位置的记录信息保存下来,并将从新位置的记录信息到
-- 原记录的前一条记录的信息顺次往下移动,把保存的原记录移动到新位置即可。
-- 如果原主键值小,表明该记录被移动到后面的新位置,可将原位置的记录信息保存下来,并将从新位置的记录信息到
-- 原记录的下一条记录的信息顺次往上移动,把保存的原记录移动到新位置即可。实际上就是记录块的移动.
-- 但是,如果数据表中的数据非常庞大,该存储过程的执行效率将会下降.
Use zzydb
--创建举例表(学生信息表)
Create Table T_StudentsInfo
(i_id int identity(1,1), --系统自增流水号
c_Stu_ID nvarchar(10), --学号
c_ClassName nvarchar(50), --班级
d_BirthDay datetime) --出生日期
go
--向举例表中插入4条学生信息,以验证下面的存储过程(sp_MyAdjustRecordOrder)
Insert into T_StudentsInfo values('001', '大二三班', '1978-01-25')
Insert into T_StudentsInfo values('002', '大一六班', '1979-02-0