SQLSERVER 游标使用简单示例
2017-07-26 14:20
429 查看
原理:如下图所示,MenuID为游标处理集合,指针每次往下移动一个格子,6条数据就会执行移动6次
![](https://img-blog.csdn.net/20170726141313060?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXEyODU2Nzk3ODQ=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
需求:现菜单表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
需求:现菜单表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
相关文章推荐
- sqlserver游标的使用示例
- sqlserver 游标的简单示例
- sqlserver游标使用步骤示例(创建游标 关闭游标)
- sqlserver 游标的简单示例
- sqlserver 游标的简单示例
- sqlserver存储过程中利用游标遍历结果集简单示例及查询数据库时间
- sqlserver游标的使用示例
- SqlServer 游标的简单示例
- 一个简单的SqlServer游标使用
- 游标使用的简单示例
- SPQuery简单使用示例
- Erlang中使用变量的简单示例
- 游标的创建及使用(sqlserver 2005)
- ORM,ASP.NET中ORM学习,ASP.NET中ORM学习心得,WEB2.0中ORM实现原理,Asp.net简单ORM示例源码详细讲解,Asp.net2.0:如何使用ObjectDataSource(配合ORM )
- 用Php扩展实现的简单框架 - 6 - 使用示例
- sqlserver简单示例
- 存储过程中 游标(CURSOR)的简单使用及其他
- Sql Server 2000 中游标的使用示例 [ZT]
- checkedListBox控件的使用简单示例