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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |