加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQLSERVER 游标使用简单示例

发布时间:2020-12-12 13:42:56 所属栏目:MsSql教程 来源:网络整理
导读:原理:如下图所示,MenuID为游标处理集合,指针每次往下移动一个格子,6条数据就会执行移动6次 需求:现菜单表tbl_Admin_Menu中的排序SeqNumber是乱的,我们需要将排序从1开始重新排序 实现: --游标更新顶级菜单排序declare @this_menuid int,@seqnumber in

原理:如下图所示,MenuID为游标处理集合,指针每次往下移动一个格子,6条数据就会执行移动6次


需求:现菜单表tbl_Admin_Menu中的排序SeqNumber是乱的,我们需要将排序从1开始重新排序

实现:

--游标更新顶级菜单排序
declare @this_menuid int,@seqnumber int=1  --定义参数@this_menuid,用于记录当前指标指向的菜单ID;参数@seqnumber,并初始化值等于1
declare Cursor_Order_Update cursor for --创建游标Cursor_Order_Update
select menuid from tbl_Admin_Menu where ParentID=0 order by SeqNumber  --待处理的游标集合,菜单ID menuid
open Cursor_Order_Update  --开始游标
fetch next from Cursor_Order_Update --指针下移
into @this_menuid  --获取当前指针指向的菜单ID
while @@FETCH_STATUS=0  --0代表未执行结束
begin

update tbl_Admin_Menu set SeqNumber=@seqnumber where MenuID=@this_menuid --根据当前指向的菜单ID,查询出当前行,并将SeaNumber更新
set @seqnumber=@seqnumber+1  --排序自动+1

fetch next from Cursor_Order_Update ----指针下移
into @this_menuid  --获取当前指针指向的菜单ID
end
close Cursor_Order_Update--关闭游标
deallocate Cursor_Order_Update--释放游标

go

--其它说明:游标执行时,可指定多个字段,代码如下
declare @this_menuid int,@this_menuname varchar(100),@seqnumber int=0
declare Cursor_Order_Update cursor for
select menuid,menuname from tbl_Admin_Menu where ParentID=0 order by SeqNumber
open Cursor_Order_Update
fetch next from Cursor_Order_Update
into @this_menuid,@this_menuname
while @@FETCH_STATUS=0
begin

print @this_menuid
print @this_menuname

fetch next from Cursor_Order_Update
into @this_menuid,@this_menuname
end
close Cursor_Order_Update
deallocate Cursor_Order_Update

go

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读